创建Windows服务请参考
创建Windows服务
创建完Windows服务后添加NLog需要引入Topshelf.Nlog包和NLog包。
在控制台启动程序中注册NLog:
var config = new NLog.Config.LoggingConfiguration();
var infoFile = new FileTarget("infoFile")
{
FileName = "${basedir}/Logs/${date:format=yyyyMMdd}/Info-${date:format=yyyy-MM-dd}.txt",
Layout = "${longdate} | ${level} | ${callsite} | ${message} | ${exception:format=tostring}"
};
config.AddTarget(infoFile);
var errorFile = new FileTarget("errorFile")
{
FileName = "${basedir}/Logs/${date:format=yyyyMMdd}/Error-${date:format=yyyy-MM-dd}.txt",
Layout = "${longdate} | ${level} | ${callsite} | ${message} | ${exception:format=tostring}"
};
config.AddTarget(errorFile);
var debugFile = new FileTarget("debugFile")
{
FileName = "${basedir}/Logs/${date:format=yyyyMMdd}/Debug-${date:format=yyyy-MM-dd}.txt",
Layout = "${longdate} | ${level} | ${callsite} | ${message} | ${exception:format=tostring}"
};
config.AddTarget(debugFile);
config.AddRule(NLog.LogLevel.Info, NLog.LogLevel.Info, infoFile);
config.AddRule(NLog.LogLevel.Error, NLog.LogLevel.Fatal, errorFile);
config.AddRule(NLog.LogLevel.Debug, NLog.LogLevel.Debug, debugFile);
NLog.LogManager.Configuration = config;
对应服务中使用NLog
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
logger.Info("测试日志");