コード例 #1
0
ファイル: Logger.cs プロジェクト: szymon159/project-game
        public GMLogger()
        {
            var config = new NLog.Config.LoggingConfiguration();
            var layout = "${time} [${level:}] - ${ndc}${message}";

            memoryTarget        = new NLog.Targets.MemoryTarget();
            memoryTarget.Layout = layout;

            var fileTarget = new NLog.Targets.FileTarget();

            fileTarget.FileName = "gm-log.txt";
            fileTarget.Layout   = layout;

            config.AddRuleForOneLevel(LogLevel.Error, memoryTarget);
            config.AddRuleForOneLevel(LogLevel.Warn, memoryTarget);
            config.AddRuleForOneLevel(LogLevel.Info, memoryTarget);

            config.AddRuleForAllLevels(fileTarget);

            LogManager.Configuration = config;
        }
コード例 #2
0
        public static NLog.LogFactory BuildNLogFactory(NLogConfiguration configuration = null)
        {
            (bool Buffered, bool KeepFileOpen, bool Shared) = configuration ?? new NLogConfiguration();

            bool AutoFlush = !Buffered;

            NLog.Targets.FileTarget fileTarget = new NLog.Targets.FileTarget("audit-log")
            {
                FileName        = $"./nlog/audit-{DateTime.Now.ToString("yyyyMMddHHmm")}-latest.log",
                ArchiveFileName = $"./nlog/audit-{DateTime.Now.ToString("yyyyMMddHHmm")}-{{###}}.log",

                AutoFlush        = AutoFlush,
                KeepFileOpen     = KeepFileOpen,
                ConcurrentWrites = Shared,

                ArchiveEvery     = NLog.Targets.FileArchivePeriod.Day,
                ArchiveNumbering = NLog.Targets.ArchiveNumberingMode.Rolling,
                ArchiveAboveSize = 100_000_000,
                Layout           = new NLog.Layouts.JsonLayout
                {
                    IncludeAllProperties = true,
                    Attributes           =
                    {
                        new NLog.Layouts.JsonAttribute("@t",  "${longdate}")
                        {
                            Encode = false
                        },
                        new NLog.Layouts.JsonAttribute("@l",  "${level:upperCase=true}")
                        {
                            Encode = false
                        },
                        new NLog.Layouts.JsonAttribute("@mt", "${message:raw=true}"),
                    }
                }
            };

            NLog.Config.LoggingConfiguration loggingConfiguration = new NLog.Config.LoggingConfiguration();

            loggingConfiguration.AddTarget(fileTarget);

            loggingConfiguration.AddRuleForOneLevel(NLog.LogLevel.Info, fileTarget);

            return(new NLog.LogFactory(loggingConfiguration)
            {
                ThrowExceptions = true,
                ThrowConfigExceptions = true,
            });
        }
コード例 #3
0
        public static void SetNlogConfig(bool isInfoFromConfig = true)
        {
            var config = new NLog.Config.LoggingConfiguration();//NLog.LogManager.Configuration;//

            //======file==================
            // Targets where to log to: File
            var logfileTarget = new NLog.Targets.FileTarget("logfileTarget")
            {
                FileName = "C:/Log/${gdc:ProgramName:whenEmpty=Default}/${shortdate}.txt", Layout = "${longdate} ${uppercase:${level}} ${message}"
            };

            //============================
            #region db
            ////======db====================
            //DatabaseTarget databaseTarget = new DatabaseTarget("databaseTarget");
            //DatabaseParameterInfo param;
            //databaseTarget.ConnectionString = isInfoFromConfig ? "${configsetting:name=ConnectionStrings.LogConnection}" : Config.GetLogDBConnectionConfig();
            ////databaseTarget.DBProvider = "mssql";
            ////databaseTarget.DBHost = ".";
            ////databaseTarget.DBUserName = "******";
            ////databaseTarget.DBPassword = "******";
            ////databaseTarget.DBDatabase = "databasename";
            //databaseTarget.CommandText = "INSERT INTO [dbo].[Log] ([Id] ,[Name] ,[ProgramName] ,[KeyWord] ,[FileName] ,[LogTime] ,[CreateTime] ,[Message]) VALUES(@Id, @Name, @ProgramName, @KeyWord, @FileName, @LogTime, @CreateTime, @Message); ";

            //param = new DatabaseParameterInfo();
            //param.Name = "@Id";
            //param.Layout = "${event-properties:item=Id}";
            //databaseTarget.Parameters.Add(param);

            //param = new DatabaseParameterInfo();
            //param.Name = "@Name";
            //param.Layout = "${event-properties:item=Name}";
            //databaseTarget.Parameters.Add(param);

            //param = new DatabaseParameterInfo();
            //param.Name = "@ProgramName";
            //param.Layout = "${gdc:ProgramName:whenEmpty=Default}";
            //databaseTarget.Parameters.Add(param);

            //param = new DatabaseParameterInfo();
            //param.Name = "@KeyWord";
            //param.Layout = "${event-properties:item=KeyWord}";
            //databaseTarget.Parameters.Add(param);

            //param = new DatabaseParameterInfo();
            //param.Name = "@FileName";
            //param.Layout = "${shortdate}";
            //databaseTarget.Parameters.Add(param);

            //param = new DatabaseParameterInfo();
            //param.Name = "@LogTime";
            //param.Layout = "${event-properties:item=LogTime}";
            ////param.Layout = "${date:universalTime=true}";
            //databaseTarget.Parameters.Add(param);

            //param = new DatabaseParameterInfo();
            //param.Name = "@CreateTime";
            //param.Layout = "${event-properties:item=CreateTime}";
            ////param.Layout = "${date:universalTime=true}";
            //databaseTarget.Parameters.Add(param);

            //param = new DatabaseParameterInfo();
            //param.Name = "@Message";
            //param.Layout = "${event-properties:item=ExceptionMessage}";
            //databaseTarget.Parameters.Add(param);
            ////============================
            #endregion

            // Rules for mapping loggers to targets (file and db)
            foreach (var level in levelList)
            {
                switch (level)
                {
                case LogLevel.Trace:
                    config.AddRuleForOneLevel(NLog.LogLevel.Trace, logfileTarget);
                    break;

                case LogLevel.Debug:
                    config.AddRuleForOneLevel(NLog.LogLevel.Debug, logfileTarget);
                    break;

                case LogLevel.Warning:
                    config.AddRuleForOneLevel(NLog.LogLevel.Warn, logfileTarget);
                    break;

                case LogLevel.Error:
                    config.AddRuleForOneLevel(NLog.LogLevel.Error, logfileTarget);
                    //config.AddRuleForOneLevel(NLog.LogLevel.Error, databaseTarget);
                    break;

                case LogLevel.Critical:
                    config.AddRuleForOneLevel(NLog.LogLevel.Fatal, logfileTarget);
                    //config.AddRuleForOneLevel(NLog.LogLevel.Fatal, databaseTarget);
                    break;

                case LogLevel.Information:
                    config.AddRuleForOneLevel(NLog.LogLevel.Info, logfileTarget);
                    break;
                }
            }
            //config.AddRule(NLog.LogLevel.Debug, LogLevel.Fatal, logconsole);

            // Apply config
            NLog.LogManager.Configuration = config;
        }
コード例 #4
0
ファイル: NLogger.cs プロジェクト: zmk523/jimu
        public NLogger(LogOptions options = null)
        {
            options = options ?? new LogOptions {
                EnableConsoleLog = true
            };
            var config = new NLog.Config.LoggingConfiguration();

            if (options.EnableFileLog)
            {
                var fileConf = new NLog.Targets.FileTarget("jimuLogFile")
                {
                    FileName         = ".\\log\\${level:lowercase=true}\\${shortdate}.log",
                    ArchiveAboveSize = 10000000,
                    Layout           = @"${date:format=yyyy-MM-dd HH\:mm\:ss.fff} ${level:uppercase=true}  ${message}"
                };
                if ((options.FileLogLevel & LogLevel.Error) == LogLevel.Error)
                {
                    config.AddRuleForOneLevel(NLog.LogLevel.Error, fileConf);
                }
                if ((options.FileLogLevel & LogLevel.Warn) == LogLevel.Warn)
                {
                    //config.AddRuleForOneLevel(NLog.LogLevel.Warn, fileConf);
                    config.AddRule(NLog.LogLevel.Warn, NLog.LogLevel.Error, fileConf);
                }
                if ((options.FileLogLevel & LogLevel.Info) == LogLevel.Info)
                {
                    config.AddRule(NLog.LogLevel.Info, NLog.LogLevel.Error, fileConf);
                    //config.AddRuleForOneLevel(NLog.LogLevel.Info, fileConf);
                }
                if ((options.FileLogLevel & LogLevel.Debug) == LogLevel.Debug)
                {
                    config.AddRule(NLog.LogLevel.Debug, NLog.LogLevel.Error, fileConf);
                    //config.AddRuleForOneLevel(NLog.LogLevel.Debug, fileConf);
                }
            }

            if (options.EnableConsoleLog)
            {
                var consoleLog = new NLog.Targets.ConsoleTarget("jimuLogconsole")
                {
                    Layout = @"${date:format=yyyy-MM-dd HH\:mm\:ss.fff} ${level:uppercase=true}  ${message}"
                };
                if ((options.ConsoleLogLevel & LogLevel.Error) == LogLevel.Error)
                {
                    config.AddRuleForOneLevel(NLog.LogLevel.Error, consoleLog);
                }
                if ((options.ConsoleLogLevel & LogLevel.Warn) == LogLevel.Warn)
                {
                    config.AddRule(NLog.LogLevel.Warn, NLog.LogLevel.Error, consoleLog);
                    //config.AddRuleForOneLevel(NLog.LogLevel.Warn, consoleLog);
                }
                if ((options.ConsoleLogLevel & LogLevel.Info) == LogLevel.Info)
                {
                    config.AddRule(NLog.LogLevel.Info, NLog.LogLevel.Error, consoleLog);
                    //config.AddRuleForOneLevel(NLog.LogLevel.Info, consoleLog);
                }
                if ((options.ConsoleLogLevel & LogLevel.Debug) == LogLevel.Debug)
                {
                    config.AddRule(NLog.LogLevel.Debug, NLog.LogLevel.Error, consoleLog);
                    //config.AddRuleForOneLevel(NLog.LogLevel.Debug, consoleLog);
                }
            }
            NLog.LogManager.Configuration = config;
            _logger = NLog.LogManager.GetLogger("jimuLogger");
        }
コード例 #5
0
 public NLogger(JimuNLogOptions options = null)
 {
     options = options ?? new JimuNLogOptions {
         EnableConsoleLog = true
     };
     if (!string.IsNullOrEmpty(options.Configuration))
     {
         N.LogManager.Configuration = new N.Config.XmlLoggingConfiguration("nlog.config");
     }
     else
     {
         var config = new N.Config.LoggingConfiguration();
         var ip     = JimuHelper.GetLocalIPAddress();
         if (options.EnableFileLog)
         {
             var fileConf = new N.Targets.FileTarget("jimuLogFile")
             {
                 FileName         = "./log/${level:lowercase=true}/${shortdate}.log",
                 ArchiveAboveSize = 10000000,
                 Layout           = @"${date:format=yyyy-MM-dd HH\:mm\:ss.fff} ${level:uppercase=true} [" + ip + "] ${message}"
             };
             if (options.FileLogPath != null)
             {
                 fileConf.FileName = options.FileLogPath + "/${level:lowercase=true}/${shortdate}.log";
             }
             if ((options.FileLogLevel & LogLevel.Error) == LogLevel.Error)
             {
                 config.AddRuleForOneLevel(N.LogLevel.Error, fileConf);
             }
             if ((options.FileLogLevel & LogLevel.Warn) == LogLevel.Warn)
             {
                 config.AddRule(N.LogLevel.Warn, N.LogLevel.Error, fileConf);
             }
             if ((options.FileLogLevel & LogLevel.Info) == LogLevel.Info)
             {
                 config.AddRule(N.LogLevel.Info, N.LogLevel.Error, fileConf);
             }
             if ((options.FileLogLevel & LogLevel.Debug) == LogLevel.Debug)
             {
                 config.AddRule(N.LogLevel.Debug, N.LogLevel.Error, fileConf);
             }
         }
         if (options.EnableConsoleLog)
         {
             var consoleLog = new N.Targets.ConsoleTarget("jimuLogconsole")
             {
                 Layout = @"${date:format=yyyy-MM-dd HH\:mm\:ss.fff} ${level:uppercase=true} [" + ip + "] ${message}"
             };
             if ((options.ConsoleLogLevel & LogLevel.Error) == LogLevel.Error)
             {
                 config.AddRuleForOneLevel(N.LogLevel.Error, consoleLog);
             }
             if ((options.ConsoleLogLevel & LogLevel.Warn) == LogLevel.Warn)
             {
                 config.AddRule(N.LogLevel.Warn, N.LogLevel.Error, consoleLog);
             }
             if ((options.ConsoleLogLevel & LogLevel.Info) == LogLevel.Info)
             {
                 config.AddRule(N.LogLevel.Info, N.LogLevel.Error, consoleLog);
             }
             if ((options.ConsoleLogLevel & LogLevel.Debug) == LogLevel.Debug)
             {
                 config.AddRule(N.LogLevel.Debug, N.LogLevel.Error, consoleLog);
             }
         }
         N.LogManager.Configuration = config;
     }
     _logger = N.LogManager.GetLogger("*", typeof(N.LogManager));
 }