asp.net core NLog将日志写到文件

1、安装Nlog包

Install-Package NLog.Extensions.Logging -Pre

2、在项目添加nlog.config文件

 2.1、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"
      internalLogLevel="Warn"
      internalLogFile="internal-nlog.txt">

  <!-- define various log targets -->
  <targets>
    <!-- write logs to file -->
    <target xsi:type="File" name="allfile" fileName="Loggers/${shortdate}.log"
                 layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />


    <target xsi:type="File" name="ownFile-web" fileName="Loggers/${shortdate}.log"
             layout="${longdate}|${logger}|${uppercase:${level}}|  ${message} ${exception}" />

    <target xsi:type="Null" name="blackhole" />
  </targets>

  <rules>
    <!--All logs, including from Microsoft-->
    <logger name="*" minlevel="Trace" writeTo="allfile" />

    <!--Skip Microsoft logs and so log only own logs-->
    <logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
    <logger name="*" minlevel="Trace" writeTo="ownFile-web" />
  </rules>
</nlog>
复制代码

3、在项目中添加project.json 配置文件

 

  3.2、project.json 文件内容

复制代码
{
  "publishOptions": {
    "include": [
      "wwwroot",
      "Views",
      "appsettings.json",
      "web.config",
      "Config/nlog.config" //加上nlog配置文件
    ]
  }
}
复制代码

4、在Startup.cs 中Configure方法添加如下代码

复制代码
  // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env,ILoggerFactory loggerFactor)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            //此方法被LogManager.LoadConfiguration替代 
            //loggerFactor.ConfigureNLog("Config/nlog.config");
            //加载Nlog的nlog.config配置文件
            LogManager.LoadConfiguration("Config/nlog.config");
            //添加NLog
            loggerFactor.AddNLog();

            app.UseMvcWithDefaultRoute();

            app.Run(async (context) =>
            {
                await context.Response.WriteAsync("Hello World!");
            });
        }
复制代码

5、Controller 调用Nlog 方法

复制代码
   public class BlogController : Controller
    {
        private TestDBContext dBContext;
        private readonly ILogger<BlogController> logger;
        public BlogController(TestDBContext _dBContext, ILogger<BlogController>  _logger)
        {
            dBContext = _dBContext;
            logger = _logger;
        }

        public IActionResult Index()
        {
            logger.LogInformation("你访问了首页55555");
            logger.LogWarning("警告信息55555");
            logger.LogError("错误信息55555");

            var list = dBContext.Blog.Select(a => new BlogViewModel() {
                CreateTime = a.CreateTime,
                Id = a.BlogId,
                Title = a.Title,
                Url = a.Url
            }).ToList();
            return View(list);
        }
}
复制代码

 

6、运行项目成功,查看log

log 目录在bin 目录下 

 

7、NLog GitHub 项目

 https://github.com/linezero/Blog/tree/master/NETCoreLogging

 

posted @   大空白纸  阅读(2233)  评论(1编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示