summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Logger.idl
blob: d47d0a3826438fe7d48b62678f25a7e02ed8ae99 (plain)
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
// $Id$

// TAO_MAXLOGMSGLEN must be the same size as ACE_MAXLOGMSGLEN.
#if !defined TAO_MAXLOGMSGLEN
#define TAO_MAXLOGMSGLEN 4 * 1024
#endif /* TAO_MAXLOGMSGLEN */

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.
    string<TAO_MAXLOGMSGLEN> 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> 

  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
};