New file |
| | |
| | | using NLog; |
| | | using NLog.Common; |
| | | using NLog.Config; |
| | | using NLog.Targets; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace HH.WCS.Mobox3.FJJT |
| | | { |
| | | |
| | | public class LogHelper |
| | | { |
| | | public static Dictionary<string, ILogger> loggers = new Dictionary<string, ILogger>(); |
| | | |
| | | public static void Debug(string message, string name = "") { |
| | | ILogger logger = null; |
| | | if (loggers.Keys.Contains(name)) { |
| | | logger = loggers[name]; |
| | | } |
| | | else { |
| | | logger = LogFactory.CreateLogger(name); |
| | | if (logger != null) { |
| | | loggers.Add(name, logger); |
| | | } |
| | | else { |
| | | logger = LogFactory.CreateLogger("console"); |
| | | } |
| | | } |
| | | if (logger != null) { |
| | | logger.Debug(message); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | public static void Info(string message, string name = "") { |
| | | //logger.Info(message); |
| | | ILogger logger = null; |
| | | if (loggers.Keys.Contains(name)) { |
| | | logger = loggers[name]; |
| | | } |
| | | else { |
| | | logger = LogFactory.CreateLogger(name); |
| | | if (logger != null) { |
| | | loggers.Add(name, logger); |
| | | } |
| | | else { |
| | | logger = LogFactory.CreateLogger("infoFile"); |
| | | } |
| | | } |
| | | if (logger != null) { |
| | | logger.Info(message); |
| | | } |
| | | } |
| | | |
| | | public static void Error(string message, Exception ex, string name = "") { |
| | | //logger.Error(ex, message); |
| | | ILogger logger = null; |
| | | if (loggers.Keys.Contains(name)) { |
| | | logger = loggers[name]; |
| | | } |
| | | else { |
| | | logger = LogFactory.CreateLogger(name); |
| | | if (logger != null) { |
| | | loggers.Add(name, logger); |
| | | } |
| | | else { |
| | | logger = LogFactory.CreateLogger("errorFile"); |
| | | } |
| | | } |
| | | if (logger != null) { |
| | | logger.Error($"{message}{ex.StackTrace}"); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | internal class LogFactory |
| | | { |
| | | /// <summary> |
| | | /// 通过配置文件配置日志 |
| | | /// </summary> |
| | | static LogFactory() { |
| | | var loggerNames = new List<string>() { "HosttoagvTask", "HosttoagvCar", "AGV", "WMS" ,"Mobox","TCP" }; |
| | | LogManager.Configuration = DefaultConfig(loggerNames); |
| | | } |
| | | public static ILogger CreateLogger(string name) { |
| | | var logger = LogManager.GetLogger(name); |
| | | return logger; |
| | | } |
| | | |
| | | public static LoggingConfiguration DefaultConfig(List<string> loggerNames) { |
| | | var config = new LoggingConfiguration(); |
| | | loggerNames.ForEach(a => { |
| | | var target = new FileTarget(); |
| | | target.ArchiveAboveSize = 1024 * 1024 * 5;//每个文件最大5M |
| | | target.ArchiveNumbering = ArchiveNumberingMode.DateAndSequence; |
| | | target.ArchiveFileName = @"${basedir}/Logs/" + a + "/{####}.txt"; |
| | | target.FileName = @"${basedir}/Logs/" + a + "/${shortdate}.txt";//当前文件路径 |
| | | target.Layout = @"${longdate} | ${level:uppercase=false:padding=-5} | ${message} ${onexception:${exception:format=tostring} ${newline} ${stacktrace} ${newline}"; |
| | | |
| | | config.AddTarget(a, target); |
| | | config.AddRuleForOneLevel(LogLevel.Info, target, a); |
| | | }); |
| | | |
| | | |
| | | // 添加target-console |
| | | var consoleTarget = new ColoredConsoleTarget(); |
| | | consoleTarget.Layout = @"${longdate} | ${level:uppercase=false:padding=-5} | ${message} ${onexception:${exception:format=tostring} ${newline} ${stacktrace} ${newline}"; |
| | | |
| | | config.AddTarget("console", consoleTarget); |
| | | config.AddRule(LogLevel.Debug, LogLevel.Fatal, consoleTarget); |
| | | |
| | | //添加target-info |
| | | var infoFileTarget = new FileTarget(); |
| | | infoFileTarget.ArchiveAboveSize = 1024 * 1024 * 5;//每个文件最大5M |
| | | infoFileTarget.ArchiveNumbering = ArchiveNumberingMode.DateAndSequence; |
| | | infoFileTarget.ArchiveFileName = @"${basedir}/Logs/Info/{####}.txt"; |
| | | infoFileTarget.FileName = @"${basedir}/Logs/Info/${shortdate}.txt";//当前文件路径 |
| | | infoFileTarget.Layout = @"${longdate} | ${level:uppercase=false:padding=-5} | ${message} ${onexception:${exception:format=tostring} ${newline} ${stacktrace} ${newline}"; |
| | | |
| | | config.AddTarget("infoFile", infoFileTarget); |
| | | config.AddRuleForOneLevel(LogLevel.Info, infoFileTarget);//INFO写在Info文件 |
| | | |
| | | //添加target-err |
| | | var errorFileTarget = new FileTarget(); |
| | | errorFileTarget.ArchiveAboveSize = 1024 * 1024 * 5;//每个文件最大5M |
| | | errorFileTarget.ArchiveNumbering = ArchiveNumberingMode.DateAndSequence; |
| | | errorFileTarget.ArchiveFileName = @"${basedir}/Logs/Error/{####}.txt"; |
| | | errorFileTarget.FileName = @"${basedir}/Logs/Error/${shortdate}.txt"; |
| | | errorFileTarget.Layout = @"${longdate} | ${level:uppercase=false:padding=-5} | ${message} ${onexception:${exception:format=tostring} ${newline} ${stacktrace} ${newline}"; |
| | | |
| | | config.AddTarget("errorFile", errorFileTarget); |
| | | config.AddRule(LogLevel.Error, LogLevel.Fatal, errorFileTarget); |
| | | |
| | | |
| | | return config; |
| | | } |
| | | |
| | | |
| | | } |
| | | } |