MCPcopy Create free account
hub / github.com/OriginQ/QPanda-2 / dispatch

Method dispatch

Extensions/PilotOSMachine/easylogging++.cpp:2218–2273  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2216}
2217
2218void DefaultLogDispatchCallback::dispatch(base::type::string_t&& logLine) {
2219 if (m_data->dispatchAction() == base::DispatchAction::NormalLog) {
2220 if (m_data->logMessage()->logger()->m_typedConfigurations->toFile(m_data->logMessage()->level())) {
2221 base::type::fstream_t* fs = m_data->logMessage()->logger()->m_typedConfigurations->fileStream(
2222 m_data->logMessage()->level());
2223 if (fs != nullptr) {
2224 fs->write(logLine.c_str(), logLine.size());
2225 if (fs->fail()) {
2226 ELPP_INTERNAL_ERROR("Unable to write log to file ["
2227 << m_data->logMessage()->logger()->m_typedConfigurations->filename(m_data->logMessage()->level()) << "].\n"
2228 << "Few possible reasons (could be something else):\n" << " * Permission denied\n"
2229 << " * Disk full\n" << " * Disk is not writable", true);
2230 } else {
2231 if (ELPP->hasFlag(LoggingFlag::ImmediateFlush)
2232 || (m_data->logMessage()->logger()->isFlushNeeded(m_data->logMessage()->level()))) {
2233 m_data->logMessage()->logger()->flush(m_data->logMessage()->level(), fs);
2234 }
2235 }
2236 } else {
2237 ELPP_INTERNAL_ERROR("Log file for [" << LevelHelper::convertToString(m_data->logMessage()->level()) << "] "
2238 << "has not been configured but [TO_FILE] is configured to TRUE. [Logger ID: "
2239 << m_data->logMessage()->logger()->id() << "]", false);
2240 }
2241 }
2242 if (m_data->logMessage()->logger()->m_typedConfigurations->toStandardOutput(m_data->logMessage()->level())) {
2243 if (ELPP->hasFlag(LoggingFlag::ColoredTerminalOutput))
2244 m_data->logMessage()->logger()->logBuilder()->convertToColoredOutput(&logLine, m_data->logMessage()->level());
2245 ELPP_COUT << ELPP_COUT_LINE(logLine);
2246 }
2247 }
2248#if defined(ELPP_SYSLOG)
2249 else if (m_data->dispatchAction() == base::DispatchAction::SysLog) {
2250 // Determine syslog priority
2251 int sysLogPriority = 0;
2252 if (m_data->logMessage()->level() == Level::Fatal)
2253 sysLogPriority = LOG_EMERG;
2254 else if (m_data->logMessage()->level() == Level::Error)
2255 sysLogPriority = LOG_ERR;
2256 else if (m_data->logMessage()->level() == Level::Warning)
2257 sysLogPriority = LOG_WARNING;
2258 else if (m_data->logMessage()->level() == Level::Info)
2259 sysLogPriority = LOG_INFO;
2260 else if (m_data->logMessage()->level() == Level::Debug)
2261 sysLogPriority = LOG_DEBUG;
2262 else
2263 sysLogPriority = LOG_NOTICE;
2264# if defined(ELPP_UNICODE)
2265 char* line = base::utils::Str::wcharPtrToCharPtr(logLine.c_str());
2266 syslog(sysLogPriority, "%s", line);
2267 free(line);
2268# else
2269 syslog(sysLogPriority, "%s", logLine.c_str());
2270# endif
2271 }
2272#endif // defined(ELPP_SYSLOG)
2273}
2274
2275#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
idMethod · 0.80
toStandardOutputMethod · 0.80
logBuilderMethod · 0.80
setLogMessageMethod · 0.80

Tested by

no test coverage detected