在将我们的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进行改写,任重而道远。

最新文章

  1. poj2488骑士马走
  2. Android线程处理
  3. canvas放射性渐变填充
  4. 组合数学 UVa 11538 Chess Queen
  5. 使用PULL方式解析XML资源文件下面的xml文件
  6. 【网络流量最大流量】poj3281Dining
  7. web前端好学吗?
  8. ACM退役记&&回忆录
  9. MariaDB Galera Cluster部署实践
  10. Linux shell编程:状态变量
  11. #pragma常用预处理指令
  12. sql server 锁与事务拨云见日(下)
  13. python深浅拷贝与赋值
  14. python day19--面向对象,接口,封装
  15. mime模块响应或设置Node.js的Content-Type头
  16. 关于daterangepicker的配置
  17. leetcode1015
  18. 查看已打包app的entitlements文件内容
  19. C#中基于流的XML文件操作笔记
  20. Webapi上传数据(XML)敏感字符解决方案

热门文章

  1. 【十大经典数据挖掘算法】SVM
  2. 理解CSS前景色和透明度
  3. HTML5 网络拓扑图整合 OpenLayers 实现 GIS 地图应用
  4. Design Patterns Simplified - Part 3 (Simple Factory)【设计模式简述--第三部分(简单工厂)】
  5. TeamCity : Build 基本配置
  6. IBatisNet -- 保护你的配置文件及映射文件信息
  7. C# 本质论 第二章 数据类型
  8. js,jquery,css,html5特效
  9. jquery+ajax+struts2
  10. Delphi_09_Delphi_Object_Pascal_面向对象编程