MCPcopy Create free account
hub / github.com/Xtra-Computing/thundersvm / dispatch

Method dispatch

src/thundersvm/util/log.cpp:2108–2163  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2106 }
2107
2108 void DefaultLogDispatchCallback::dispatch(base::type::string_t&& logLine) {
2109 if (m_data->dispatchAction() == base::DispatchAction::NormalLog) {
2110 if (m_data->logMessage()->logger()->m_typedConfigurations->toFile(m_data->logMessage()->level())) {
2111 base::type::fstream_t* fs = m_data->logMessage()->logger()->m_typedConfigurations->fileStream(
2112 m_data->logMessage()->level());
2113 if (fs != nullptr) {
2114 fs->write(logLine.c_str(), logLine.size());
2115 if (fs->fail()) {
2116 ELPP_INTERNAL_ERROR("Unable to write log to file ["
2117 << m_data->logMessage()->logger()->m_typedConfigurations->filename(m_data->logMessage()->level()) << "].\n"
2118 << "Few possible reasons (could be something else):\n" << " * Permission denied\n"
2119 << " * Disk full\n" << " * Disk is not writable", true);
2120 } else {
2121 if (ELPP->hasFlag(LoggingFlag::ImmediateFlush)
2122 || (m_data->logMessage()->logger()->isFlushNeeded(m_data->logMessage()->level()))) {
2123 m_data->logMessage()->logger()->flush(m_data->logMessage()->level(), fs);
2124 }
2125 }
2126 } else {
2127 ELPP_INTERNAL_ERROR("Log file for [" << LevelHelper::convertToString(m_data->logMessage()->level()) << "] "
2128 << "has not been configured but [TO_FILE] is configured to TRUE. [Logger ID: "
2129 << m_data->logMessage()->logger()->id() << "]", false);
2130 }
2131 }
2132 if (m_data->logMessage()->logger()->m_typedConfigurations->toStandardOutput(m_data->logMessage()->level())) {
2133 if (ELPP->hasFlag(LoggingFlag::ColoredTerminalOutput))
2134 m_data->logMessage()->logger()->logBuilder()->convertToColoredOutput(&logLine, m_data->logMessage()->level());
2135 ELPP_COUT << ELPP_COUT_LINE(logLine);
2136 }
2137 }
2138#if defined(ELPP_SYSLOG)
2139 else if (m_data->dispatchAction() == base::DispatchAction::SysLog) {
2140 // Determine syslog priority
2141 int sysLogPriority = 0;
2142 if (m_data->logMessage()->level() == Level::Fatal)
2143 sysLogPriority = LOG_EMERG;
2144 else if (m_data->logMessage()->level() == Level::Error)
2145 sysLogPriority = LOG_ERR;
2146 else if (m_data->logMessage()->level() == Level::Warning)
2147 sysLogPriority = LOG_WARNING;
2148 else if (m_data->logMessage()->level() == Level::Info)
2149 sysLogPriority = LOG_INFO;
2150 else if (m_data->logMessage()->level() == Level::Debug)
2151 sysLogPriority = LOG_DEBUG;
2152 else
2153 sysLogPriority = LOG_NOTICE;
2154# if defined(ELPP_UNICODE)
2155 char* line = base::utils::Str::wcharPtrToCharPtr(logLine.c_str());
2156 syslog(sysLogPriority, "%s", line);
2157 free(line);
2158# else
2159 syslog(sysLogPriority, "%s", logLine.c_str());
2160# endif
2161 }
2162#endif // defined(ELPP_SYSLOG)
2163 }
2164
2165#if ELPP_ASYNC_LOGGING

Callers 1

triggerDispatchMethod · 0.80

Calls 15

dispatchActionMethod · 0.80
toFileMethod · 0.80
loggerMethod · 0.80
fileStreamMethod · 0.80
filenameMethod · 0.80
isFlushNeededMethod · 0.80
flushMethod · 0.80
toStandardOutputMethod · 0.80
logBuilderMethod · 0.80
setLogMessageMethod · 0.80
setDispatchActionMethod · 0.80

Tested by

no test coverage detected