1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
#ifndef TAO_LOGGER_IDL
#define TAO_LOGGER_IDL
// TAO_MAXLOGMSGLEN must be the same size as ACE_MAXLOGMSGLEN.
#if !defined TAO_MAXLOGMSGLEN
#define TAO_MAXLOGMSGLEN 4 * 1024
#endif /* TAO_MAXLOGMSGLEN */
typedef string<TAO_MAXLOGMSGLEN> TAO_log_string;
interface Logger
{
// = TITLE
// Used to log messages to a logging server.
//
// = DESCRIPTION
// This implementation provides a CORBA wrapper around the
// <ACE_Log_Msg> mechanism.
enum Log_Priority
{
LM_SHUTDOWN,
// Shutdown the logger
LM_TRACE,
// Messages indicating function-calling sequence
LM_DEBUG,
// Messages that contain information normally of use only when
// debugging a program
LM_INFO,
// Informational messages
LM_NOTICE,
// Conditions that are not error conditions, but that may require
// special handling
LM_WARNING,
// Warning messages
LM_STARTUP,
// Initialize the logger
LM_ERROR,
// Error messages
LM_CRITICAL,
// Critical conditions, such as hard device errors
LM_ALERT,
// A condition that should be corrected immediately, such as a
// corrupted system database
LM_EMERGENCY,
// A panic condition. This is normally broadcast to all users
LM_MAX
// In <ACE_Log_Priority>, LM_MAX is aliased to LM_EMERGENCY rather than
// being a distinct tag, but that is invalid IDL syntax. We
// adjust for this internally.
};
enum Verbosity_Level
{
VERBOSE,
// Display messages in a verbose manner.
VERBOSE_LITE,
// Display messages in a less verbose manner (i.e., only print
// information that can change between calls).
SILENT
// Do not print messages at all (just leave in thread-specific
// storage for later inspection).
};
struct Log_Record
{
Log_Priority type; // Type of logging message.
long time; // Timestamp of the sender.
long app_id; // Process id of the sender.
long host_addr; // IP address of the sender.
TAO_log_string msg_data; // The logging message.
};
oneway void log (in Log_Record log_rec);
// Transmit a Log_Record to the logging server.
oneway void logv (in Log_Record log_rec,
in Verbosity_Level level);
// Log a message with a specific Verbosity level which may be
// differeny from the <verbosity_level>
void log_twoway (in Log_Record log_rec);
// Like log (), but twoway such that applications will block until
// log messages are received by the logger
void logv_twoway (in Log_Record log_rec,
in Verbosity_Level level);
// Like logv (), but twoway for the same reason as logv_twoway ()
oneway void verbosity (in Verbosity_Level level);
// Change the state of the <verbosity_level>. This controls how
// much logging information is displayed by the server.
};
interface Logger_Factory
{
// = TITLE
// Create a <Logger> of type <name>.
Logger make_logger (in string name);
// Returns a new <Logger> instance if <name> is unique, or retuns a
// previously created instance of that name
};
#endif /* TAO_LOGGER_IDL */
|