首页 > 代码库 > NLog的使用
NLog的使用
1 先安装NLog程序包 如上图 :
2 建了一个调用的类 NLogHelper 内容如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NLog;
namespace VideoConvert
{
public static class LogHelper
{
private static Logger logger = LogManager.GetCurrentClassLogger();
public static void Write(LogLevel logLevel, string message)
{
logger.Log(logLevel, message);
}
}
}
3 新建NLog的配置文件(也可以在app.config或web.config里添加信息)NLog.config 路径在项目的根目录 控制台程序在exe目录下 内容举例如下:
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!--
See http://nlog-project.org/wiki/Configuration_file
for information on customizing logging rules and outputs.
-->
<targets async="true">
<target xsi:type="File" name="logfile" fileName="${basedir}/logs/${shortdate}.log" //路由对应的文件地址
layout="${longdate} ${uppercase:${level}} ${message}" />
<target xsi:type="File" name="errorlogfile" fileName="${basedir}/logs/error_${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}" />
<target xsi:type="File" name="signinfile" fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate},${message}" />
</targets>
<rules>
<logger name="*" levels="Info" writeTo="logfile" /> //错误类型对应的不同路由
<logger name="*" levels="Error" writeTo="errorlogfile" />
<logger name="*" levels="Trace" writeTo="signinfile" />
</rules>
</nlog>
4 就可以在程序中使用 2步中的 LogHelper.Write(LogLevel.Trace, string.Format("Message: ")); 来记录日志
loglevel.trace 对应 config文件中的levels=Trace 可以有多种
我使用的原因:
进程重定向输出的两种方式 一种同步输出 一种异步输出 (同步造成了死锁 异步造成日志文件访问冲突)
//WriteSWFError(p.StandardError.ReadToEnd()); //同步 数据量大 输出管道满 导致无法读写造成死锁 不可用
//WriteSWFError(p.StandardOutput.ReadToEnd());
p.BeginOutputReadLine(); //异步
p.BeginErrorReadLine();
NLog的使用