Пример #1
0
AppenderConsole::AppenderConsole(uint8 id, std::string const& name, LogLevel level, AppenderFlags flags, ExtraAppenderArgs extraArgs)
    : Appender(id, name, level, flags), _colored(false)
{
    for (uint8 i = 0; i < MaxLogLevels; ++i)
        _colors[i] = ColorTypes(MaxColors);

    if (!extraArgs.empty())
        InitColors(extraArgs[0]);
}
Пример #2
0
AppenderFile::AppenderFile(uint8 id, std::string const& name, LogLevel level, AppenderFlags flags, ExtraAppenderArgs extraArgs) :
    Appender(id, name, level, flags),
    logfile(NULL),
    _logDir(sLog->GetLogsDir()),
    _maxFileSize(0),
    _fileSize(0)
{
    if (extraArgs.empty())
        throw InvalidAppenderArgsException(Trinity::StringFormat("Log::CreateAppenderFromConfig: Missing file name for appender %s\n", name.c_str()));

    _fileName = extraArgs[0];

    char const* mode = "a";
    if (extraArgs.size() > 1)
        mode = extraArgs[1];

    if (flags & APPENDER_FLAGS_USE_TIMESTAMP)
    {
        size_t dot_pos = _fileName.find_last_of(".");
        if (dot_pos != std::string::npos)
            _fileName.insert(dot_pos, sLog->GetLogsTimestamp());
        else
            _fileName += sLog->GetLogsTimestamp();
    }

    if (extraArgs.size() > 2)
        _maxFileSize = atoi(extraArgs[2]);
    else
        _maxFileSize = 0;

    _dynamicName = std::string::npos != _fileName.find("%s");
    _backup = (flags & APPENDER_FLAGS_MAKE_FILE_BACKUP) != 0;

    if (!_dynamicName)
        logfile = OpenFile(_fileName, mode, !strcmp(mode, "w") && _backup);
}