private static NLog.Logger _logger = NLog.LogManager.GetCurrentClassLogger();
<?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"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="false"
internalLogLevel="Off"
internalLogFile="c:\temp\nlog-internal.log">
<variable name="varDataFolderPath" value="${basedir}/logs"/>
<variable name="varLayHeader" value="${longdate}|${level}"/>
<variable name="varLayMiddle" value="${callsite-linenumber}|${callsite:includeSourcePath=false:methodName=false}"/>
<variable name="varLayBack" value="${message}|${exception:format=toString}"/>
<targets async="true">
<!--async="true"表示异步记录日志,提高程序效率 文档说明(https://blog.csdn.net/surfirst/article/details/110404365)-->
<!--5120000:5000KB|1024000:1000KB|512000:500KB-->
<!--<target name="debugger" xsi:type="Debugger" layout="${date:format=HH\:mm\:ss} | ${level:padding=-5} | ${message}"/>-->
<target name="console" xsi:type="ColoredConsole" layout="${date:format=HH\:mm\:ss} | ${level:padding=-5} | ${message}"/>
<target name="error_file" xsi:type="File" maxArchiveFiles="30"
keepFileOpen="true"
archiveAboveSize="5120000" archiveEvery="Day" archiveNumbering="Rolling"
archiveFileName="${varDataFolderPath}/archives/error-${date:format=yyyyMMdd}-{###}.log"
fileName="${basedir}/logs/error.log"
layout="${newline}时间:${longdate}
${newline}等级:${level:uppercase=false:padding=-5}
${newline}信息:${message}
${newline}路径:${callsite:className=True:fileName=True:includeSourcePath=True:methodName=True}"/>
<target name="log_file" xsi:type="File" maxArchiveFiles="30"
keepFileOpen="true"
archiveAboveSize="5120000"
archiveEvery="Day"
archiveNumbering="Rolling"
archiveFileName="${varDataFolderPath}/archives/loger-${date:format=yyyyMMdd}-{###}.log"
fileName="${basedir}/logs/info.log"
layout="${longdate} | ${level:uppercase=false:padding=-5} | ${message}"/>
<target name="trace_file" xsi:type="File" maxArchiveFiles="30"
archiveAboveSize="5120000"
archiveEvery="Day"
archiveNumbering="Rolling"
archiveFileName="${varDataFolderPath}/archives/trace-${date:format=yyyyMMdd}-{###}.log"
fileName="${basedir}/logs/trace.log"
layout="${longdate} | ${level:uppercase=false:padding=-5} | ${message}"/>
<target name="log_sqlserver" xsi:type="Database" dbProvider="System.Data.SqlClient" connectionString="Data Source=127.0.0.1;Initial Catalog=Nlog;Persist Security Info=True;User ID=sa;Password=hx@123" commandText="insert into NLog([Date],[origin],[Level],[Message],[Detail],[Source]) values (getdate(), @origin, @logLevel, @message,@detail,@source)">
<parameter name="@origin" layout="${callsite}"/> <!--日志来源-->
<parameter name="@logLevel" layout="${level}"/> <!--日志等级-->
<parameter name="@message" layout="${message}"/> <!--日志消息-->
<parameter name="@detail" layout="${variable1}"/> <!--引用variable1信息-->
<parameter name="@source" layout="${callsite:className=True:fileName=True:includeSourcePath=True:methodName=True}"/> <!--路径-->
</target>
<target name="log_mysql" xsi:type="Database" dbProvider="MySql.Data.MySqlClient" connectionString="Server=127.0.0.1;Database=nlog;Uid=root;Pwd=hx@123;" commandText="insert into nlog(create_time,loglevel,callsite,massage,stacktrace,logger,machinename,appversion,processname) values (@create_time,@loglevel,@callsite,@massage,@stacktrace,@logger,@machinename,@appversion,@processname)">
<parameter name="create_time" layout="${longdate}"/>
<parameter name="loglevel" layout="${level}"/>
<parameter name="logger" layout="${logger}"/>
<parameter name="machinename" layout="${machinename}"/>
<parameter name="appversion" layout="${assembly-version}"/>
<parameter name="processname" layout="${processname}"/>
<parameter name="callsite" layout="${callsite:className=True:fileName=True:includeSourcePath=True:methodName=True}"/>
<parameter name="massage" layout="${message}"/>
<parameter name="stacktrace" layout="${stacktrace}"/>
</target>
</targets>
<rules>
<logger name="*" writeTo="console"/> <!--将所有类型的日志输出到控制台中-->
<logger name="*" level="Error" writeTo="error_file"/> <!--将Error级别以上的日志输出到文件中-->
<logger name="*" level="Trace" writeTo="trace_file"/>
<logger name="*" levels="Info,Trace,Fatal,Warn" writeTo="log_file"/> <!--将Info,Fatal,Warn级别的日志输出到文件中-->
<!--<logger name="*" minlevel="Info" writeTo="logconsole" />--> <!--将Info级的日志输出到控制台-->
<!--<logger name="*" writeTo="debugger"/>-->
<!--将所有日志记录到数据库中,需要添加System.Data.dll、MySql.Data.dll的引用-->
<!--
<logger name="*" writeTo="log_sqlserver"/>
<logger name="*" writeTo="log_mysql"/>
-->
</rules>
</nlog>
https://www.cnblogs.com/JaggerMan/p/4884504.html
默认配置
<?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"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="false"
internalLogLevel="Off"
internalLogFile="c:\nlog\nlog-internal.log">
<variable name="varDataFolderPath" value="${basedir}/logs"/>
<variable name="varLayHeader" value="${longdate}|${level}"/>
<variable name="varLayMiddle" value="${callsite-linenumber}|${callsite:includeSourcePath=false:methodName=false}"/>
<variable name="varLayBack" value="${message}|${exception:format=toString}"/>
<targets>
<!--屏幕打印消息-->
<target name="console" xsi:type="ColoredConsole"
layout="${date:format=HH\:mm\:ss}> ${message}"/>
<!--VS输出窗口-->
<target name="debugger" xsi:type="Debugger"
layout="${date:format=HH\:mm\:ss} | ${level:padding=-5} | ${message}" />
<!--保存至文件-->
<target name="error_file" xsi:type="File" maxArchiveFiles="30"
archiveAboveSize="5120000" archiveEvery="Day" archiveNumbering="Rolling"
archiveFileName="${varDataFolderPath}/archives/e-${date:format=yyyyMMdd}-{###}.log"
fileName="${basedir}/Logs/error.log"
layout="
${newline}时间:${longdate}
${newline}等级:${level:uppercase=false:padding=-5}
${newline}信息:${message}
${newline}路径:${callsite:className=True:fileName=True:includeSourcePath=True:methodName=True}"/>
<target name="info_file" xsi:type="File" maxArchiveFiles="30"
archiveAboveSize="5120000"
archiveEvery="Day"
archiveNumbering="Rolling"
archiveFileName="${varDataFolderPath}/archives/i-${date:format=yyyyMMdd}-{###}.log"
fileName="${basedir}/Logs/info.log"
layout="${longdate} | ${level:uppercase=false:padding=-5} | ${message}" />
</targets>
<rules>
<logger name="*" writeTo="console" /> <!--将所有的日志输出到控制台中-->
<logger name="*" writeTo="debugger"/>
<logger name="*" level="Error" writeTo="error_file" /> <!--将Error级别以上的日志输出到文件中-->
<logger name="*" level="Info" writeTo="info_file" /> <!--将Error级别以上的日志输出到文件中-->
</rules>
</nlog>
static void Main(string[] args)
{
Logger _logger = LogManager.GetCurrentClassLogger();
_logger.Trace("Trace Message");
_logger.Debug("DebugMessage");
_logger.Info("InfoMessage");
_logger.Error("Error Message");
_logger.Fatal("FatalMessage");
}