安装
通过Nuget安装,搜索Nlog, 然后安装NLog和NLog.Config(相当于一个配置模板)。
当然也可以自己在项目根目录下创建一个配置文件NLog.config,注意在NLog.config的属性中设置 Copy to Output Directory: Copy always
Bash
public class LogHelper
{
private static readonly Logger log = LogManager.GetLogger(string.Empty);
public static void Trace(object msg, Exception ex = null)
{
if (ex == null)
{
log.Trace(msg.ParseToString());
}
else
{
log.Trace(msg + GetExceptionMessage(ex));
}
}
public static void Debug(object msg, Exception ex = null)
{
if (ex == null)
{
log.Debug(msg.ParseToString());
}
else
{
log.Debug(msg + GetExceptionMessage(ex));
}
}
public static void Info(object msg, Exception ex = null)
{
if (ex == null)
{
log.Info(msg.ParseToString());
}
else
{
log.Info(msg + GetExceptionMessage(ex));
}
}
public static void Warn(object msg, Exception ex = null)
{
if (ex == null)
{
log.Warn(msg.ParseToString());
}
else
{
log.Warn(msg + GetExceptionMessage(ex));
}
}
public static void Error(object msg, Exception ex = null)
{
if (ex == null)
{
log.Error(msg.ParseToString());
}
else
{
log.Error(msg + GetExceptionMessage(ex));
}
}
public static void Error(Exception ex)
{
if (ex != null)
{
log.Error(GetExceptionMessage(ex));
}
}
public static void Fatal(object msg, Exception ex = null)
{
if (ex == null)
{
log.Fatal(msg.ParseToString());
}
else
{
log.Fatal(msg + GetExceptionMessage(ex));
}
}
public static void Fatal(Exception ex)
{
if (ex != null)
{
log.Fatal(GetExceptionMessage(ex));
}
}
private static string GetExceptionMessage(Exception ex)
{
string message = string.Empty;
if (ex != null)
{
message += ex.Message;
message += Environment.NewLine;
Exception originalException = ex.GetOriginalException();
if (originalException != null)
{
if (originalException.Message != ex.Message)
{
message += originalException.Message;
message += Environment.NewLine;
}
}
message += ex.StackTrace;
message += Environment.NewLine;
}
return message;
}
级别由低到高
- Trace 记录完整的信息,一般只用在开发环境
- Debug 记录调试信息,没有Trace信息完整,一般也只用在开发环境
- Info 简单的信息,一般用在生产环境
- Warn 记录警告信息,一些可以解决的小问题
- Error 记录报错信息,一般都是Exceptions信息
- Fatal 非常严重的错误信息
一个简单的配制文件
Bash
<?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"
autoReload="true"
internalLogLevel="Off"
throwExceptions="false">
<!-- the targets to write to -->
<targets>
<!-- write logs to file -->
<target xsi:type="File" name="all" fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate}|${message} ${exception:format=tostring}" />
</targets>
<!-- rules to map from logger name to target -->
<rules>
<logger name="*" minlevel="Trace" writeTo="all" />
</rules>
</nlog>
调用方法
LogHelper.Info("启动");