#include "global.h" static void DoInitGlobalLog(THolder<TGlobalLog> logger, THolder<ILoggerFormatter> formatter) { TLoggerOperator<TGlobalLog>::Set(logger.Release()); if (!formatter) { formatter.Reset(CreateRtyLoggerFormatter()); } TLoggerFormatterOperator::Set(formatter.Release()); } void DoInitGlobalLog(const TString& logType, const int logLevel, const bool rotation, const bool startAsDaemon, THolder<ILoggerFormatter> formatter, bool threaded) { DoInitGlobalLog( MakeHolder<TGlobalLog>( CreateLogBackend( NLoggingImpl::PrepareToOpenLog(logType, logLevel, rotation, startAsDaemon), (ELogPriority)logLevel, threaded)), std::move(formatter)); } void DoInitGlobalLog(THolder<TLogBackend> backend, THolder<ILoggerFormatter> formatter) { DoInitGlobalLog(THolder(new TGlobalLog(std::move(backend))), std::move(formatter)); } bool GlobalLogInitialized() { return TLoggerOperator<TGlobalLog>::Usage(); } template <> TGlobalLog* CreateDefaultLogger<TGlobalLog>() { return new TGlobalLog("console", TLOG_INFO); } template <> TNullLog* CreateDefaultLogger<TNullLog>() { return new TNullLog("null"); } NPrivateGlobalLogger::TVerifyEvent::~TVerifyEvent() { const TString info = Str(); FATAL_LOG << info << Endl; Y_ABORT("%s", info.data()); }