29 namespace LogOutputImp
31 int decode( G::LogOutput::SyslogFacility facility )
33 if( facility == G::LogOutput::SyslogFacility::User )
return LOG_USER ;
34 if( facility == G::LogOutput::SyslogFacility::Daemon )
return LOG_DAEMON ;
35 if( facility == G::LogOutput::SyslogFacility::Mail )
return LOG_MAIL ;
36 if( facility == G::LogOutput::SyslogFacility::Cron )
return LOG_CRON ;
37 if( facility == G::LogOutput::SyslogFacility::Local0 )
return LOG_LOCAL0 ;
38 if( facility == G::LogOutput::SyslogFacility::Local1 )
return LOG_LOCAL1 ;
39 if( facility == G::LogOutput::SyslogFacility::Local2 )
return LOG_LOCAL2 ;
40 if( facility == G::LogOutput::SyslogFacility::Local3 )
return LOG_LOCAL3 ;
41 if( facility == G::LogOutput::SyslogFacility::Local4 )
return LOG_LOCAL4 ;
42 if( facility == G::LogOutput::SyslogFacility::Local5 )
return LOG_LOCAL5 ;
43 if( facility == G::LogOutput::SyslogFacility::Local6 )
return LOG_LOCAL6 ;
44 if( facility == G::LogOutput::SyslogFacility::Local7 )
return LOG_LOCAL7 ;
47 int decode( G::Log::Severity severity )
49 if( severity == G::Log::Severity::s_Warning )
return LOG_WARNING ;
50 if( severity == G::Log::Severity::s_Error )
return LOG_ERR ;
51 if( severity == G::Log::Severity::s_InfoSummary )
return LOG_INFO ;
52 if( severity == G::Log::Severity::s_InfoVerbose )
return LOG_INFO ;
55 int mode( G::LogOutput::SyslogFacility facility , G::Log::Severity severity )
57 return decode(facility) | decode(severity) ;
62void G::LogOutput::osoutput(
int fd , G::Log::Severity severity ,
char * message , std::size_t n )
64 if( m_config.m_use_syslog && severity != Log::Severity::s_Debug )
67 ::syslog( LogOutputImp::mode(m_config.m_facility,severity) ,
"%s" , message ) ;
70 if( m_config.m_quiet_stderr && (
71 severity == Log::Severity::s_Debug ||
72 severity == Log::Severity::s_InfoVerbose ||
73 severity == Log::Severity::s_InfoSummary ) )
80 GDEF_IGNORE_RETURN ::write( fd , message , n+1U ) ;
84void G::LogOutput::osinit()
87 if( m_config.m_use_syslog )
88 ::openlog(
nullptr , LOG_PID , LogOutputImp::decode(m_config.m_facility) ) ;
95void G::LogOutput::oscleanup() const noexcept
97 if( m_config.m_use_syslog )
static void register_(const std::string &exe)
Registers the given executable as a source of logging.