summaryrefslogtreecommitdiff
path: root/ACE/ace/Log_Msg.cpp
diff options
context:
space:
mode:
authorschmidt <douglascraigschmidt@users.noreply.github.com>2009-08-04 13:17:07 +0000
committerschmidt <douglascraigschmidt@users.noreply.github.com>2009-08-04 13:17:07 +0000
commit75e02a0a64b5da4b1f67e99d4cc19fd516ff54e2 (patch)
tree7fee0f64ac15210c9bac1a209601a91c98e50cfa /ACE/ace/Log_Msg.cpp
parent0e57f9899b76fea91e9105b544f6d61a98007404 (diff)
downloadATCD-75e02a0a64b5da4b1f67e99d4cc19fd516ff54e2.tar.gz
ChangeLogTag:Tue
Diffstat (limited to 'ACE/ace/Log_Msg.cpp')
-rw-r--r--ACE/ace/Log_Msg.cpp101
1 files changed, 89 insertions, 12 deletions
diff --git a/ACE/ace/Log_Msg.cpp b/ACE/ace/Log_Msg.cpp
index 5c6d75287ac..49bb12fb8c3 100644
--- a/ACE/ace/Log_Msg.cpp
+++ b/ACE/ace/Log_Msg.cpp
@@ -1355,21 +1355,98 @@ ACE_Log_Msg::log (const ACE_TCHAR *format_str,
}
case 'M': // Print the name of the priority of the message.
+
+ // Look at the format precision specifier. .1 is interpreted
+ // as a single character printout, otherwise we print the name of
+ // the priority.
+
+ // So, did we find a .1 specifier? Do we need to override it?
+ if (format[1] == ACE_TEXT('.') &&
+ format[2] == ACE_TEXT('1'))
+ {
+ // Yup.
+ // Print a single character signifying the severity of the message
+ fp = format;
+ fp++;
+# if defined (ACE_USES_WCHAR)
+ ACE_OS::strcpy (fp, ACE_TEXT ("c"));
+# else /* ACE_USES_WCHAR */
+ ACE_OS::strcpy (fp, ACE_TEXT ("C"));
+# endif /* ACE_USES_WCHAR */
+ // Below is an optimized (binary search based)
+ // version of the following simple piece of code:
+ //
+ // log_priority == LM_SHUTDOWN ? 'S' : // Shutdown
+ // log_priority == LM_TRACE ? 'T' : // Trace
+ // log_priority == LM_DEBUG ? 'D' : // Debug
+ // log_priority == LM_INFO ? 'I' : // Info
+ // log_priority == LM_NOTICE ? 'N' : // Notice
+ // log_priority == LM_WARNING ? 'W' : // Warning
+ // log_priority == LM_STARTUP ? 'U' : // Startup
+ // log_priority == LM_ERROR ? 'E' : // Error
+ // log_priority == LM_CRITICAL ? 'C' : // Critical
+ // log_priority == LM_ALERT ? 'A' : // Alert
+ // log_priority == LM_EMERGENCY ? '!' : // Emergency
+ // '?' // Unknown
+
+ if (can_check)
+ this_len = ACE_OS::snprintf
+ (bp, bspace, format,
+ (log_priority <= LM_WARNING) ?
+ (log_priority <= LM_DEBUG) ?
+ (log_priority <= LM_TRACE) ?
+ (log_priority == LM_SHUTDOWN) ?
+ ACE_TEXT('S') : ACE_TEXT('T') : ACE_TEXT('D') :
+ (log_priority <= LM_NOTICE) ?
+ (log_priority == LM_INFO) ?
+ ACE_TEXT('I') : ACE_TEXT('N') : ACE_TEXT('W') :
+ (log_priority <= LM_CRITICAL) ?
+ (log_priority <= LM_ERROR) ?
+ (log_priority == LM_STARTUP) ?
+ ACE_TEXT('U') : ACE_TEXT('E') : ACE_TEXT('C') :
+ (log_priority <= LM_EMERGENCY) ?
+ (log_priority == LM_ALERT) ?
+ ACE_TEXT('A') : ACE_TEXT('!') : ACE_TEXT('?'));
+ else
+ this_len = ACE_OS::sprintf
+ (bp, format,
+ (log_priority <= LM_WARNING) ?
+ (log_priority <= LM_DEBUG) ?
+ (log_priority <= LM_TRACE) ?
+ (log_priority == LM_SHUTDOWN) ?
+ ACE_TEXT('S') : ACE_TEXT('T') : ACE_TEXT('D') :
+ (log_priority <= LM_NOTICE) ?
+ (log_priority == LM_INFO) ?
+ ACE_TEXT('I') : ACE_TEXT('N') : ACE_TEXT('W') :
+ (log_priority <= LM_CRITICAL) ?
+ (log_priority <= LM_ERROR) ?
+ (log_priority == LM_STARTUP) ?
+ ACE_TEXT('U') : ACE_TEXT('E') : ACE_TEXT('C') :
+ (log_priority <= LM_EMERGENCY) ?
+ (log_priority == LM_ALERT) ?
+ ACE_TEXT('A') : ACE_TEXT('!') : ACE_TEXT('?'));
+ ACE_UPDATE_COUNT (bspace, this_len);
+ }
+ else
+ {
+ // Nope, print out standard priority_name() string
+
#if !defined (ACE_WIN32) && defined (ACE_USES_WCHAR)
- ACE_OS::strcpy (fp, ACE_TEXT ("ls"));
+ ACE_OS::strcpy (fp, ACE_TEXT ("ls"));
#else
- ACE_OS::strcpy (fp, ACE_TEXT ("s"));
+ ACE_OS::strcpy (fp, ACE_TEXT ("s"));
#endif
- if (can_check)
- this_len = ACE_OS::snprintf
- (bp, bspace, format,
- ACE_Log_Record::priority_name (log_priority));
- else
- this_len = ACE_OS::sprintf
- (bp, format,
- ACE_Log_Record::priority_name (log_priority));
- ACE_UPDATE_COUNT (bspace, this_len);
- break;
+ if (can_check)
+ this_len = ACE_OS::snprintf
+ (bp, bspace, format,
+ ACE_Log_Record::priority_name (log_priority));
+ else
+ this_len = ACE_OS::sprintf
+ (bp, format,
+ ACE_Log_Record::priority_name (log_priority));
+ ACE_UPDATE_COUNT (bspace, this_len);
+ }
+ break;
case 'm': // Format the string assocated with the errno value.
{