29 namespace LogOutputImp
31 int decode( LogOutput::SyslogFacility facility )
33 if( facility == LogOutput::SyslogFacility::User )
return LOG_USER ;
34 if( facility == LogOutput::SyslogFacility::Daemon )
return LOG_DAEMON ;
35 if( facility == LogOutput::SyslogFacility::Mail )
return LOG_MAIL ;
36 if( facility == LogOutput::SyslogFacility::Cron )
return LOG_CRON ;
37 if( facility == LogOutput::SyslogFacility::Local0 )
return LOG_LOCAL0 ;
38 if( facility == LogOutput::SyslogFacility::Local1 )
return LOG_LOCAL1 ;
39 if( facility == LogOutput::SyslogFacility::Local2 )
return LOG_LOCAL2 ;
40 if( facility == LogOutput::SyslogFacility::Local3 )
return LOG_LOCAL3 ;
41 if( facility == LogOutput::SyslogFacility::Local4 )
return LOG_LOCAL4 ;
42 if( facility == LogOutput::SyslogFacility::Local5 )
return LOG_LOCAL5 ;
43 if( facility == LogOutput::SyslogFacility::Local6 )
return LOG_LOCAL6 ;
44 if( facility == LogOutput::SyslogFacility::Local7 )
return LOG_LOCAL7 ;
47 int decode( LogOutput::Severity severity )
49 if( severity == LogOutput::Severity::Warning )
return LOG_WARNING ;
50 if( severity == LogOutput::Severity::Error )
return LOG_ERR ;
51 if( severity == LogOutput::Severity::InfoSummary )
return LOG_INFO ;
52 if( severity == LogOutput::Severity::InfoVerbose )
return LOG_INFO ;
55 int mode( LogOutput::SyslogFacility facility , LogOutput::Severity severity )
57 return decode(facility) | decode(severity) ;
62void G::LogOutput::osoutput(
int fd , Severity severity ,
char * message , std::size_t n )
64 if( m_config.m_use_syslog && severity != Severity::Debug )
67 ::syslog( LogOutputImp::mode(m_config.m_facility,severity) ,
"%s" , message ) ;
70 if( m_config.m_quiet_stderr && (
71 severity == Severity::Debug ||
72 severity == Severity::InfoVerbose ||
73 severity == Severity::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) ) ;
97void G::LogOutput::oscleanup() const noexcept
99 if( m_config.m_use_syslog )
static void register_(const Path &exe)
Registers the given executable as a source of logging.
int fd() const noexcept
Returns the output file descriptor.
A Path object represents a file system path.