文章出處

在將我們的ASP.NET 5示例站點(about.cnblogs.com)升級至ASP.NET 5 RC1的時候,我們增加了控制臺日志功能。

在ASP.NET 5添加日志功能很簡單,只需在project.json中添加Microsoft.Extensions.Logging.Console的引用:

"dependencies":{
    "Microsoft.Extensions.Logging.Console": "1.0.0-*"
}

并且在 Startup.cs 中添加 loggerFactory.AddConsole() :

using Microsoft.Extensions.Logging;

namespace CNBlogs.AboutUs.Web
{
    public class Startup
    {
        public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole();
        }
    }
}

然后在控制臺就能看到站點運行時的日志信息:

但控制臺日志查看與查找日志信息都不方便,文件日志才是解決之道。所以打算增加文件日志功能,那在ASP.NET 5中如何實現呢?

首先要選擇一個日志組件,我們開始選用的是 Serilog.Framework.Logging

先在 project.json 中添加  Serilog.Framework.Logging 的引用:

"dependencies":{
    "Serilog.Framework.Logging":"1.0.0-*"
}

然后運行dnu restore命令安裝nuget包包。

接著在 Startup.cs 中添加如下的代碼:

using System.IO;
using Serilog;

public class Startup {
    public Startup(IApplicationEnvironment appEnv) {
        Log.Logger = new LoggerConfiguration()
            .MinimumLevel.Debug()
            .WriteTo.RollingFile(Path.Combine(
                appEnv.ApplicationBasePath,"logs/log-{Date}.txt"))
            .CreateLogger();
    }

    public void Configure(IApplicationBuilder app,
                                ILoggerFactory loggerFactory) {
        loggerFactory.AddSerilog();
    }
}

用 dnx kestrel 運行時卻出現了下面的錯誤:

DNXCore,Version=v5.0 error CS1061: 'LoggerSinkConfiguration' does not contain a definition for 'RollingFile' and no extension method 'RollingFile' accepting a first argument of type 'LoggerSinkConfiguration' could be found (are you missing a using directive or an assembly reference?)

而將 .WriteTo.RollingFile 改為 .WriteTo.TextWriter(Console.Out) 使用控制臺則能正常顯示日志信息。

開始以為是缺少了某個命名空間的引用,后來發現是因為 serilog 的 .RollingFile 目前還不支持 .NET Core。

只能尋找其它的日志組件。

準備改用NLog,結果發現NLog的文件日志也不支持 .NET Core。

log4net就更別談了,它還沒開始支持.NET Core。

于是,不得不面對這樣的現實:目前在Linux上跑ASP.NET 5站點,竟然沒有可用的將日志信息記錄到文件的日志組件。

所以,.NET的跨平臺不僅僅是.NET Core的跨平臺,而且整個.NET生態的跨平臺,很多組件都需要針對.NET Core進行改寫,任重而道遠。


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()