using HH.WCS.SJML.util;
|
using NLog;
|
using NLog.Config;
|
using NLog.Targets;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
|
namespace HH.WCS.Hexafluo
|
{
|
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 Detail(string title, string content)
|
{
|
Info(title, content);
|
}
|
|
public static void InDetail(LogPara logPara, string content)
|
{
|
logPara.LogIndex++;
|
Info("入库", logPara.LogType + logPara.LogIndex + ":" + content);
|
}
|
public static void TaskDetail(LogPara logPara, string content)
|
{
|
logPara.LogIndex++;
|
Info("完工回报", logPara.LogType + logPara.LogIndex + ":" + content);
|
}
|
public static void OutDetail(LogPara logPara, string content)
|
{
|
logPara.LogIndex++;
|
Info("出库", logPara.LogType + logPara.LogIndex + ":" + content);
|
}
|
public static void AreaTask(LogPara logPara, string content)
|
{
|
logPara.LogIndex++;
|
Info(logPara.LogType, logPara.LogType + logPara.LogIndex + ":" + content);
|
}
|
|
|
public static void Info(string name, string message = "")
|
{
|
//logger.Info(message);
|
ILogger logger = null;
|
ILogger logger2 = null;
|
if (string.IsNullOrEmpty(name))
|
{
|
name = "INFO";
|
}
|
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);
|
logger2 = LogFactory.CreateLogger("infoFile");
|
logger2.Info(message);
|
}
|
}
|
|
|
public static void CompInfo(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("CompInfo");
|
}
|
}
|
if (logger != null)
|
{
|
logger.Info(message);
|
}
|
}
|
public static void DanInfo(string name, string message)
|
{
|
ILogger logger = null;
|
if (loggers.Keys.Contains(name))
|
{
|
logger = loggers[name];
|
}
|
else
|
{
|
logger = LogFactory.CreateLogger(name);
|
}
|
if (logger != null)
|
{
|
logger.Info(message);
|
}
|
}
|
|
public static void CameraInfo(string name, string message = "")
|
{
|
//logger.Info(message);
|
ILogger logger = null;
|
if (string.IsNullOrEmpty(name))
|
{
|
name = "INFO";
|
}
|
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", "NDC", "MES", "绑定解绑", "重量计算", "物料品质修改", "入库",
|
"入库算法", "出库", "出库算法", "处理自管任务", "更换终点", "更换起点", "执行的SQL", "ERP传参", "完工回报",
|
"任务下发", "给立库下达任务", "立库", "立库任务下达", "发送给MES", "回滚任务服务", "INFO",
|
"Wcs报警信息", "巷道用禁用", "接驳位用禁用", "转运", "钉钉通知", "下发无托盘入库立库任务","调整优先级","确定入库托盘信息","计算AGV时间","出库到接驳位","入库改道","ts切换路线" };
|
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 * 20;//每个文件最大20M
|
target.ArchiveNumbering = ArchiveNumberingMode.DateAndSequence;
|
target.ArchiveFileName = @"${basedir}/Logs/" + a + "/{####}.log";
|
target.FileName = @"${basedir}/Logs/" + a + "/${shortdate}.log";//当前文件路径
|
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 * 20;//每个文件最大5M
|
infoFileTarget.ArchiveNumbering = ArchiveNumberingMode.DateAndSequence;
|
infoFileTarget.ArchiveFileName = @"${basedir}/Logs/Info/{####}.log";
|
infoFileTarget.FileName = @"${basedir}/Logs/Info/${shortdate}.log";//当前文件路径
|
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, "infoFile");//INFO写在Info文件
|
|
//添加target-err
|
var errorFileTarget = new FileTarget();
|
errorFileTarget.ArchiveAboveSize = 1024 * 1024 * 20;//每个文件最大5M
|
errorFileTarget.ArchiveNumbering = ArchiveNumberingMode.DateAndSequence;
|
errorFileTarget.ArchiveFileName = @"${basedir}/Logs/Error/{####}.log";
|
errorFileTarget.FileName = @"${basedir}/Logs/Error/${shortdate}.log";
|
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;
|
}
|
|
|
}
|
}
|