int ACE_Log_Record::format_msg (const ACE_TCHAR host_name[], u_long verbose_flag, ACE_TCHAR *verbose_msg) { /* 012345678901234567890123456 */ /* yyyy-mm-dd hh:mm:ss.mmmmmm<nul> */ ACE_TCHAR timestamp[27]; // Only used by VERBOSE and VERBOSE_LITE. // The sprintf format needs to be different for Windows and POSIX // in the wide-char case. #if defined (ACE_WIN32) || !defined (ACE_USES_WCHAR) const ACE_TCHAR *verbose_fmt = ACE_TEXT ("%s@%s@%u@%s@%s"); const ACE_TCHAR *verbose_lite_fmt = ACE_TEXT ("%s@%s@%s"); #else const ACE_TCHAR *verbose_fmt = ACE_TEXT ("%ls@%ls@%u@%ls@%ls"); const ACE_TCHAR *verbose_lite_fmt = ACE_TEXT ("%ls@%ls@%ls"); #endif if (ACE_BIT_ENABLED (verbose_flag, ACE_Log_Msg::VERBOSE) || ACE_BIT_ENABLED (verbose_flag, ACE_Log_Msg::VERBOSE_LITE)) { ACE_Time_Value reftime (this->secs_, this->usecs_); if (0 == ACE::timestamp (reftime, timestamp, sizeof (timestamp) / sizeof (ACE_TCHAR))) return -1; // Historical timestamp in VERBOSE[_LITE] used 3 places for partial sec. // 012345678901234567890123456 // 1989-10-18 14:25:36.123<nul> timestamp[23] = '\0'; } if (ACE_BIT_ENABLED (verbose_flag, ACE_Log_Msg::VERBOSE)) { const ACE_TCHAR *lhost_name = ((host_name == 0) ? ACE_TEXT ("<local_host>") : host_name); ACE_OS::sprintf (verbose_msg, verbose_fmt, timestamp, lhost_name, this->pid_, ACE_Log_Record::priority_name (ACE_Log_Priority (this->type_)), this->msg_data_); } else if (ACE_BIT_ENABLED (verbose_flag, ACE_Log_Msg::VERBOSE_LITE)) ACE_OS::sprintf (verbose_msg, verbose_lite_fmt, timestamp, ACE_Log_Record::priority_name (ACE_Log_Priority (this->type_)), this->msg_data_); else ACE_OS::strcpy (verbose_msg, this->msg_data_); return 0; }
void ACSLogImpl::logErrorWithPriority(const ACSErr::ErrorTrace &et, ACSLog::Priorities p) { ErrorTraceHelper err(const_cast<ACSErr::ErrorTrace &>(et)); if(p == ACSLog::ACS_LOG_TRACE) err.log(ACE_Log_Priority(1 << 1)); else if (p == ACSLog::ACS_LOG_DELOUSE) err.log(ACE_Log_Priority(010000)); err.log(ACE_Log_Priority(1 << (p))); // here we assume that enums in IDL starts from 0 }//logErrorWithPriorty
/* --------------------- [ CORBA interface ] ----------------------*/ ::contLogTest::LongSeq* TestLogLevelsComp::getLevels () { Logging::Logger *l = getLogger(); ::contLogTest::LongSeq_var level = new ::contLogTest::LongSeq(5); level->length(5); // need a way to retrieve default/hardcoded settings, i.e. the // equivalent of Java's logConfig.getMinLogLevel() etc. in C++. // Hardcode these values for the time being ;-) level[0] = static_cast< CORBA::Long >(2); level[1] = static_cast< CORBA::Long >(2); level[3] = static_cast< CORBA::Long >(LogLevelDefinition::fromACEPriority(ACE_Log_Priority(l->getRemoteLevel()))); level[4] = static_cast< CORBA::Long >(LogLevelDefinition::fromACEPriority(ACE_Log_Priority(l->getLocalLevel()))); level[2] = (level[3] < level[4] ? level[3] : level[4]); return level._retn(); }
int ACE_Log_Record::print (const ACE_TCHAR host_name[], u_long verbose_flag, FILE *fp) { if ( log_priority_enabled(this->category(), ACE_Log_Priority (this->type_)) ) { ACE_TCHAR *verbose_msg = 0; #if defined (ACE_HAS_ALLOC_HOOKS) ACE_ALLOCATOR_RETURN (verbose_msg, static_cast<ACE_TCHAR *>(ACE_Allocator::instance()->malloc(sizeof(ACE_TCHAR) * MAXVERBOSELOGMSGLEN)), -1); #else ACE_NEW_RETURN (verbose_msg, ACE_TCHAR[MAXVERBOSELOGMSGLEN], -1); #endif /* ACE_HAS_ALLOC_HOOKS */ int result = this->format_msg (host_name, verbose_flag, verbose_msg, MAXVERBOSELOGMSGLEN); if (result == 0) { if (fp != 0) { int const verbose_msg_len = static_cast<int> (ACE_OS::strlen (verbose_msg)); #if !defined (ACE_WIN32) && defined (ACE_USES_WCHAR) int const fwrite_result = ACE_OS::fprintf (fp, ACE_TEXT ("%ls"), verbose_msg); #else int const fwrite_result = ACE_OS::fprintf (fp, ACE_TEXT ("%s"), verbose_msg); #endif // We should have written everything if (fwrite_result != verbose_msg_len) result = -1; else ACE_OS::fflush (fp); } } #if defined (ACE_HAS_ALLOC_HOOKS) ACE_Allocator::instance()->free(verbose_msg); #else delete [] verbose_msg; #endif /* ACE_HAS_ALLOC_HOOKS */ return result; } else return 0; }
ssize_t ACE_Log_Msg_UNIX_Syslog::log (ACE_Log_Record &log_record) { int syslog_priority = this->convert_log_priority (log_record.type ()); u_long flags = ACE_LOG_MSG->flags (); // The UNIX syslog() facility does not support multi-line messages. // Break up the message data into separate lines and send each line // to the syslog daemon. ACE_TCHAR message[ACE_Log_Record::MAXVERBOSELOGMSGLEN]; ACE_OS::strcpy (message, log_record.msg_data ()); ACE_TCHAR *strtokp = 0; for (ACE_TCHAR *line = ACE_OS::strtok_r (message, ACE_TEXT ("\n"), &strtokp); line != 0; line = ACE_OS::strtok_r (0, ACE_TEXT ("\n"), &strtokp)) { // Format the message line. Note that the processing for // VERBOSE is the same as for VERBOSE_LITE, since syslog() // already provides us with the hostname and PID. However, the // timestamp is duplicated (albeit a shortened version) to // provide a timestamp with greater precision than that provided // by syslog(). if (ACE_BIT_ENABLED (flags, ACE_Log_Msg::VERBOSE) || ACE_BIT_ENABLED (flags, ACE_Log_Msg::VERBOSE_LITE)) { ACE_TCHAR date_and_time[35]; if (0 == ACE::timestamp (date_and_time, sizeof (date_and_time), 1)) ACE_OS::strcpy (date_and_time, ACE_TEXT ("<time error>")); const ACE_TCHAR *prio_name = ACE_Log_Record::priority_name(ACE_Log_Priority(log_record.type())); syslog (syslog_priority, "%s: %s: %s", ACE_TEXT_ALWAYS_CHAR (date_and_time), ACE_TEXT_ALWAYS_CHAR (prio_name), ACE_TEXT_ALWAYS_CHAR (line)); } else // No formatting required. syslog (syslog_priority, "%s", ACE_TEXT_ALWAYS_CHAR (line)); } return 0; }
int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) { const ACE_TCHAR *prog_name = argv[0]; int iterations = argc < 2 ? 10 : ACE_OS::atoi (argv[1]); const ACE_TCHAR *logger_key = argc < 3 ? ACE_DEFAULT_LOGGER_KEY : argv[2]; int verbose = argc < 4 ? 0 : ACE_Log_Msg::VERBOSE; ACE_OS::srand ((u_int) ACE_OS::time (0)); if (ACE_LOG_MSG->open (prog_name, ACE_Log_Msg::LOGGER, logger_key) == -1) { ACE_ERROR ((LM_ERROR, "Cannot open logger, using STDERR\n")); if (ACE_LOG_MSG->open (prog_name, ACE_Log_Msg::STDERR | verbose) == -1) ACE_ERROR_RETURN ((LM_ERROR, "Cannot open logger\n"), -1); } ACE_DEBUG ((LM_STARTUP, "starting up the test\n")); for (int i = 0; i < iterations; i++) { size_t priority = ACE_OS::rand () % int (LM_MAX); ACE_POW (priority); ACE_Log_Priority log_priority = ACE_Log_Priority (priority); ACE_DEBUG ((log_priority, "random message %s (%d)...\n", ACE_Log_Record::priority_name (log_priority), priority)); } ACE_DEBUG ((LM_SHUTDOWN, "closing down the test\n")); #if defined (ACE_WIN32) // !!Important, Winsock is broken in that if you don't close // down the connection before exiting main, you'll lose data. // More over, your server might get "Access Violation" from // within Winsock functions. // Here we close down the connection to Logger by redirecting // the logging destination back to stderr. ACE_LOG_MSG->open (0, ACE_Log_Msg::STDERR, 0); #endif /* ACE_WIN32 */ return 0; }
int ACE_Log_Record::print (const ACE_TCHAR host_name[], u_long verbose_flag, FILE *fp) { if (ACE_LOG_MSG->log_priority_enabled (ACE_Log_Priority (this->type_))) { ACE_TCHAR *verbose_msg = 0; ACE_NEW_RETURN (verbose_msg, ACE_TCHAR[MAXVERBOSELOGMSGLEN], -1); int result = this->format_msg (host_name, verbose_flag, verbose_msg); if (result == 0) { if (fp != 0) { int const verbose_msg_len = static_cast<int> (ACE_OS::strlen (verbose_msg)); #if !defined (ACE_WIN32) && defined (ACE_USES_WCHAR) int const fwrite_result = ACE_OS::fprintf (fp, ACE_TEXT ("%ls"), verbose_msg); #else int const fwrite_result = ACE_OS::fprintf (fp, ACE_TEXT ("%s"), verbose_msg); #endif // We should have written everything if (fwrite_result != verbose_msg_len) result = -1; else ACE_OS::fflush (fp); } } delete[] verbose_msg; return result; } else return 0; }
int main (int argc, char *argv[]) { const char *prog_name = argv[0]; int iterations = argc < 2 ? 10 : ACE_OS::atoi (argv[1]); const char *logger_key = argc < 3 ? ACE_DEFAULT_LOGGER_KEY : argv[2]; ACE_OS::srand ((u_int) ACE_OS::time (0)); ACE_LOG_MSG->open (prog_name, ACE_Log_Msg::LOGGER, ACE_TEXT_CHAR_TO_TCHAR (logger_key)); ACE_DEBUG ((LM_STARTUP, "starting up the test\n")); for (int i = 0; i < iterations; i++) { size_t priority = ACE_OS::rand () % int (LM_MAX); ACE_POW (priority); ACE_DEBUG ((ACE_Log_Priority (priority), "random message %d...\n", priority)); } ACE_DEBUG ((LM_SHUTDOWN, "closing down the test\n")); #if defined (ACE_WIN32) // !!Important, Winsock is broken in that if you don't close // down the connection before exiting main, you'll lose data. // More over, your server might get "Access Violation" from // within Winsock functions. // Here we close down the connection to Logger by redirecting // the logging destination back to stderr. ACE_LOG_MSG->open (0, ACE_Log_Msg::STDERR, 0); #endif /* ACE_WIN32 */ return 0; }
int ACE_Log_Record::format_msg (const ACE_TCHAR host_name[], u_long verbose_flag, ACE_TCHAR *verbose_msg) { /* 0123456789012345678901234 */ /* Oct 18 14:25:36.000 1989<nul> */ ACE_TCHAR timestamp[26]; // Only used by VERBOSE and VERBOSE_LITE. // The sprintf format needs to be different for Windows and POSIX // in the wide-char case. #if defined (ACE_WIN32) || !defined (ACE_USES_WCHAR) const ACE_TCHAR *time_fmt = ACE_TEXT ("%s.%03ld %s"); const ACE_TCHAR *verbose_fmt = ACE_TEXT ("%s@%s@%u@%s@%s"); const ACE_TCHAR *verbose_lite_fmt = ACE_TEXT ("%s@%s@%s"); #else const ACE_TCHAR *time_fmt = ACE_TEXT ("%ls.%03ld %ls"); const ACE_TCHAR *verbose_fmt = ACE_TEXT ("%ls@%ls@%u@%ls@%ls"); const ACE_TCHAR *verbose_lite_fmt = ACE_TEXT ("%ls@%ls@%ls"); #endif if (ACE_BIT_ENABLED (verbose_flag, ACE_Log_Msg::VERBOSE) || ACE_BIT_ENABLED (verbose_flag, ACE_Log_Msg::VERBOSE_LITE)) { time_t const now = this->secs_; ACE_TCHAR ctp[26]; // 26 is a magic number... if (ACE_OS::ctime_r (&now, ctp, sizeof ctp / sizeof (ACE_TCHAR)) == 0) return -1; /* 01234567890123456789012345 */ /* Wed Oct 18 14:25:36 1989n0 */ ctp[19] = '\0'; // NUL-terminate after the time. ctp[24] = '\0'; // NUL-terminate after the date. ACE_OS::sprintf (timestamp, time_fmt, ctp + 4, ((long) this->usecs_) / 1000, ctp + 20); } if (ACE_BIT_ENABLED (verbose_flag, ACE_Log_Msg::VERBOSE)) { const ACE_TCHAR *lhost_name = ((host_name == 0) ? ACE_TEXT ("<local_host>") : host_name); ACE_OS::sprintf (verbose_msg, verbose_fmt, timestamp, lhost_name, this->pid_, ACE_Log_Record::priority_name (ACE_Log_Priority (this->type_)), this->msg_data_); } else if (ACE_BIT_ENABLED (verbose_flag, ACE_Log_Msg::VERBOSE_LITE)) ACE_OS::sprintf (verbose_msg, verbose_lite_fmt, timestamp, ACE_Log_Record::priority_name (ACE_Log_Priority (this->type_)), this->msg_data_); else ACE_OS::strcpy (verbose_msg, this->msg_data_); return 0; }
int ACE_Log_Record::format_msg (const ACE_TCHAR *host_name, u_long verbose_flag, ACE_TCHAR *verbose_msg) { /* 0123456789012345678901234 */ /* Oct 18 14:25:36.000 1989<nul> */ ACE_TCHAR timestamp[26]; // Only used by VERBOSE and VERBOSE_LITE. if (ACE_BIT_ENABLED (verbose_flag, ACE_Log_Msg::VERBOSE) || ACE_BIT_ENABLED (verbose_flag, ACE_Log_Msg::VERBOSE_LITE)) { time_t now = this->secs_; ACE_TCHAR ctp[26]; // 26 is a magic number... if (ACE_OS::ctime_r (&now, ctp, sizeof ctp) == 0) return -1; /* 01234567890123456789012345 */ /* Wed Oct 18 14:25:36 1989n0 */ ctp[19] = '\0'; // NUL-terminate after the time. ctp[24] = '\0'; // NUL-terminate after the date. ACE_OS::sprintf (timestamp, ACE_LIB_TEXT ("%s.%03ld %s"), ctp + 4, ((long) this->usecs_) / 1000, ctp + 20); } if (ACE_BIT_ENABLED (verbose_flag, ACE_Log_Msg::VERBOSE)) { # if defined (ACE_HAS_BROKEN_CONDITIONAL_STRING_CASTS) const ACE_TCHAR *lhost_name = (const ACE_TCHAR *) ((host_name == 0) ? ((char *) ACE_LIB_TEXT ("<local_host>")) : ((char *) host_name)); # else /* ! defined (ACE_HAS_BROKEN_CONDITIONAL_STRING_CASTS) */ const ACE_TCHAR *lhost_name = ((host_name == 0) ? ACE_LIB_TEXT ("<local_host>") : host_name); # endif /* ! defined (ACE_HAS_BROKEN_CONDITIONAL_STRING_CASTS) */ ACE_OS::sprintf (verbose_msg, ACE_LIB_TEXT ("%s@%s@%u@%s@%s"), timestamp, lhost_name, this->pid_, ACE_Log_Record::priority_name (ACE_Log_Priority (this->type_)), this->msg_data_); } else if (ACE_BIT_ENABLED (verbose_flag, ACE_Log_Msg::VERBOSE_LITE)) ACE_OS::sprintf (verbose_msg, ACE_LIB_TEXT ("%s@%s@%s"), timestamp, ACE_Log_Record::priority_name (ACE_Log_Priority (this->type_)), this->msg_data_); else ACE_OS::sprintf (verbose_msg, ACE_LIB_TEXT ("%s"), this->msg_data_); return 0; }