コード例 #1
0
ファイル: Appender.cs プロジェクト: FelCore/FelCore
 public Appender(byte id, string name, LogLevel level = LOG_LEVEL_DISABLED, AppenderFlags flags = APPENDER_FLAGS_NONE)
 {
     _id    = id;
     _name  = name;
     _level = level;
     _flags = flags;
 }
コード例 #2
0
ファイル: Appender.cs プロジェクト: spadd/CypherCore
 protected Appender(byte id, string name, LogLevel level = LogLevel.Disabled, AppenderFlags flags = AppenderFlags.None)
 {
     _id    = id;
     _name  = name;
     _level = level;
     _flags = flags;
 }
コード例 #3
0
ファイル: Appender.cs プロジェクト: spadd/CypherCore
 public ConsoleAppender(byte id, string name, LogLevel level, AppenderFlags flags) : base(id, name, level, flags)
 {
     _consoleColor = new[]
     {
         ConsoleColor.White,
         ConsoleColor.White,
         ConsoleColor.Gray,
         ConsoleColor.Green,
         ConsoleColor.Yellow,
         ConsoleColor.Red,
         ConsoleColor.Blue
     };
 }
コード例 #4
0
ファイル: AppenderConsole.cs プロジェクト: FelCore/FelCore
        public AppenderConsole(byte id, string name, LogLevel level, AppenderFlags flags, string[] args)
            : base(id, name, level, flags)
        {
            for (byte i = 0; i < (int)NUM_ENABLED_LOG_LEVELS; ++i)
            {
                _colors[i] = (ColorTypes)NUM_COLOR_TYPES;
            }

            if (3 < args.Length)
            {
                InitColors(name, args[3]);
            }
        }
コード例 #5
0
ファイル: AppenderFile.cs プロジェクト: FelCore/FelCore
        public AppenderFile(byte id, string name, LogLevel level, AppenderFlags flags, string[] args) : base(id, name, level, flags)
        {
            _logDir = sLog.LogsDir;
            if (args.Length < 4)
            {
                throw new InvalidAppenderArgsException(string.Format("Log::CreateAppenderFromConfig: Missing file name for appender {0}", name));
            }

            _fileName = args[3];

            string mode = "a";

            if (4 < args.Length)
            {
                mode = args[4];
            }

            if ((flags & APPENDER_FLAGS_USE_TIMESTAMP) != 0)
            {
                var dot_pos = _fileName.LastIndexOf('.');
                if (dot_pos != -1)
                {
                    _fileName = _fileName.Insert(dot_pos, sLog.LogsTimestamp ?? string.Empty);
                }
                else
                {
                    _fileName += sLog.LogsTimestamp;
                }
            }

            if (5 < args.Length)
            {
                //if (Optional<uint32> size = Trinity::StringTo<uint32>(args[5]))
                if (long.TryParse(args[5], out var result))
                {
                    _maxFileSize = result;
                }
                else
                {
                    throw new InvalidAppenderArgsException(string.Format("Log::CreateAppenderFromConfig: Invalid size '{0}' for appender {1}", args[5], name));
                }
            }

            _dynamicName = _fileName.IndexOf("{0}") != -1;
            _backup      = (flags & APPENDER_FLAGS_MAKE_FILE_BACKUP) != 0;

            if (!_dynamicName)
            {
                _logfile = OpenFile(_fileName, mode, (mode == "w") && _backup);
            }
        }
コード例 #6
0
ファイル: Log.cs プロジェクト: spadd/CypherCore
    static void CreateAppenderFromConfig(string appenderName)
    {
        if (string.IsNullOrEmpty(appenderName))
        {
            return;
        }

        string options = ConfigMgr.GetDefaultValue(appenderName, "");
        var    tokens  = new StringArray(options, ',');
        string name    = appenderName.Substring(9);

        if (tokens.Length < 2)
        {
            Console.WriteLine("Log.CreateAppenderFromConfig: Wrong configuration for appender {0}. Config line: {1}", name, options);
            return;
        }

        AppenderFlags flags = AppenderFlags.None;
        AppenderType  type  = (AppenderType)uint.Parse(tokens[0]);
        LogLevel      level = (LogLevel)uint.Parse(tokens[1]);

        if (level > LogLevel.Fatal)
        {
            Console.WriteLine("Log.CreateAppenderFromConfig: Wrong Log Level {0} for appender {1}\n", level, name);
            return;
        }

        if (tokens.Length > 2)
        {
            flags = (AppenderFlags)uint.Parse(tokens[2]);
        }

        byte id = NextAppenderId();

        switch (type)
        {
        case AppenderType.Console:
        {
            var appender = new ConsoleAppender(id, name, level, flags);
            appenders[id] = appender;
            break;
        }

        case AppenderType.File:
        {
            string filename;
            if (tokens.Length < 4)
            {
                if (name != "Server")
                {
                    Console.WriteLine("Log.CreateAppenderFromConfig: Missing file name for appender {0}", name);
                    return;
                }

                filename = Process.GetCurrentProcess().ProcessName + ".log";
            }
            else
            {
                filename = tokens[3];
            }

            appenders[id] = new FileAppender(id, name, level, filename, m_logsDir, flags);
            break;
        }

        case AppenderType.DB:
        {
            appenders[id] = new DBAppender(id, name, level);
            break;
        }

        default:
            Console.WriteLine("Log.CreateAppenderFromConfig: Unknown type {0} for appender {1}", type, name);
            break;
        }
    }
コード例 #7
0
ファイル: Appender.cs プロジェクト: spadd/CypherCore
    public FileAppender(byte id, string name, LogLevel level, string fileName, string logDir, AppenderFlags flags) : base(id, name, level, flags)
    {
        Directory.CreateDirectory(logDir);
        _fileName    = fileName;
        _logDir      = logDir;
        _dynamicName = _fileName.Contains("{0}");

        if (_dynamicName)
        {
            Directory.CreateDirectory(logDir + "/" + _fileName.Substring(0, _fileName.IndexOf('/') + 1));
            return;
        }

        _logStream = OpenFile(_fileName, FileMode.Create);
    }
コード例 #8
0
 public AppenderDB(byte id, string name, LogLevel level, AppenderFlags flags, string[] args)
     : base(id, name, level, flags)
 {
 }
コード例 #9
0
        public static Appender CreateAppender <T>(byte id, string name, LogLevel level, AppenderFlags flags, string[] extraArgs) where T : Appender
        {
            var obj = (Appender?)Activator.CreateInstance(typeof(T), new object[] { id, name, level, flags, extraArgs });

            if (obj == null)
            {
                throw new ArgumentException(string.Format("CreateAppender failed for type {0}", typeof(T).Name));
            }

            return(obj);
        }
コード例 #10
0
        private void CreateAppenderFromConfig(string?appenderName)
        {
            if (string.IsNullOrEmpty(appenderName))
            {
                return;
            }

            // Format = type, level, flags, optional1, optional2
            // if type = File. optional1 = file and option2 = mode
            // if type = Console. optional1 = Color
            var options = sConfigMgr.GetStringDefault(appenderName, "");

            var tokens = options.Split(',', StringSplitOptions.TrimEntries);

            var size = tokens.Length;
            var name = appenderName.Substring(9);

            if (size < 2)
            {
                Console.Error.WriteLine(string.Format("Log::CreateAppenderFromConfig: Wrong configuration for appender {0}. Config line: {1}", name, options));
                return;
            }

            AppenderFlags flags = APPENDER_FLAGS_NONE;
            AppenderType  type  = APPENDER_INVALID;

            Enum.TryParse <AppenderType>(tokens[0], out type);

            LogLevel level = LOG_LEVEL_INVALID;

            Enum.TryParse <LogLevel>(tokens[1], out level);

            if (!_appenderFactory.TryGetValue((byte)type, out var factoryFunction))
            {
                Console.Error.WriteLine(string.Format("Log::CreateAppenderFromConfig: Unknown type '{0}' for appender {1}", tokens[0], name));
                return;
            }

            if (level > NUM_ENABLED_LOG_LEVELS)
            {
                Console.Error.WriteLine(string.Format("Log::CreateAppenderFromConfig: Wrong Log Level '{0}' for appender {1}", tokens[1], name));
                return;
            }

            if (size > 2)
            {
                if (byte.TryParse(tokens[2], out var flagsVal))
                {
                    flags = (AppenderFlags)flagsVal;
                }
                else
                {
                    Console.Error.WriteLine(string.Format("Log::CreateAppenderFromConfig: Unknown flags '{0}' for appender {1}", tokens[2], name));
                    return;
                }
            }

            try
            {
                var appender = factoryFunction(NextAppenderId(), name, level, flags, tokens);
                _appenders[appender.Id] = appender;
            }
            catch (InvalidAppenderArgsException ex)
            {
                Console.Error.WriteLine(ex);
            }
        }