1、新建一个 .NET Core 项目,选择控制台应用程序,名称TestNetCore。
2、使用Nuget程序管理器,添加nlog,
3、添加nlog.config,内容如下
<?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" throwExceptions="false" internalLogLevel="Warn" internalLogFile="logs/nlog.log">
<targets>
<!--输出到数据库-->
<target name="Database" xsi:type="Database" dbProvider="MySql.Data.MySqlClient.MySqlConnection, MySql.Data" connectionString="server=localhost;database=mynetcore;user=root;password=123456;">
<commandText>
insert into logs (date,level,message) values(@longdate,@level,@message);
</commandText>
<parameter name="@longdate" layout="${longdate}" />
<parameter name="@level" layout="${level}" />
<parameter name="@message" layout="${message}" />
</target>
<target xsi:type="File" name="File" fileName="Logs/log.txt" layout="${longdate} | ${logger} | ${uppercase:${level}} | ${message} ${exception}" encoding="UTF-8"/>
<!--输出到普通控制台-->
<target name="Console" xsi:type="ColoredConsole" layout="${uppercase:${level}}:${longdate} | ${logger} | ${uppercase:${level}} | ${message} ${exception}">
</target>
</targets>
<rules>
<!--跳过所有Info级别以下的Microsoft组件的日志记录-->
<logger name="Microsoft.*" minlevel="Info" final="true" />
<!--注意这里的name="*",如果这里的name=xx了那么在C#的后台.cs文件使用日志的时候必须把xx当做参数来传递,否则没有日志输出-->
<logger name="*" minlevel="Info" writeTo="Database" />
<logger name="*" minlevel="Trace" writeTo="Console" />
<logger name="*" minlevel="Debug" writeTo="File" />
</rules>
</nlog>
注意:要把nlog.config属性设置成复制到输出目录
4、Program中添加如下
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System;
using Microsoft.Extensions.Logging;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.Globalization;
using System.Reflection;
using log4net;
using System.IO;
using log4net.Repository;
using log4net.Config;
using NLog;
namespace TestNetCore
{
internal class Program
{
static void Main(string[] args)
{
#region NLog
Logger logger = NLog.LogManager.GetCurrentClassLogger();
logger.Fatal("Fatal");
logger.Error("Error");
logger.Warn("Warn");
logger.Info("Info");
logger.Debug("Debug");
logger.Trace("Trace");
#endregion
Console.ReadLine();
}
}
}
5、运行效果