.NET跨平台之旅:增加文件日志功能遇到的挫折
在将我们的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进行改写,任重而道远。
.NET跨平台之旅:增加文件日志功能遇到的挫折的更多相关文章
- iNeuOS工业互联网操作系统,分布式云端控制安全策略和增加实时日志功能
目 录 1. 概述... 2 2. 平台演示... 2 3. 云端控制策略和应用过程... 2 3.1 云端控制策略... 2 3.2 ...
- 仿酷狗音乐播放器开发日志二十七 用ole为窗体增加文件拖动功能(附源码)
转载请说明原出处,谢谢~~ 中秋到了,出去玩了几天.今天把仿酷狗程序做了收尾,已经开发完成了,下一篇博客把完结的情况说一下.在这篇博客里说一下使用OLE为窗体增加文件拖拽的功能.使用播放器,我更喜欢直 ...
- Nginx之旅系列 - Nginx日志功能 PK Linux内核printk
题记:Nginx之旅系列是用来记录Nginx从使用到源码学习的点点滴滴,分享学习Nginx的快乐 Nginx 首页: http://nginx.org/ Nginx日志功能 PK Linux内核pri ...
- PHP里面增加写日志功能
配置项中:
- .NET跨平台之旅:在Linux上将ASP.NET 5运行日志写入文件
在前一篇博文(增加文件日志功能遇到的挫折)中,我们遇到了这样一个问题:虽然有一些.NET日志组件(比如Serilog, NLog)已经开始支持.NET Core,但目前只支持控制台输出日志,不支持将日 ...
- iNeuOS工业互联网操作系统,发布3.6.4版本:云端安全控制和实时日志功能,附Chrome、Firefox和Edge浏览器测试性能对比
目 录 1. 概述... 2 2. 平台演示... 2 3. 云端控制和实时日志设计和技术... 2 4. 实时日志测试... 2 1. 概述 ...
- 如何为Windows服务增加Log4net和EventLog的日志功能。
一.简介 最近在做一个项目的时候,需要该项目自动启动.自动运行,不需要认为干预.不用说,大家都知道用什么技术,那就是 Windows服务.在以前的Net Framework 平台下,Windows 服 ...
- 转: KindEditor 图片空间文件增加删除文件、文件夹功能(ASP语言环境)
KindEditor 图片上传功能中集成的图片空间文件管理插件可以对已上传图片进行管理,十分便捷,只是没有图片删除功能,仔细研读xieliang分享的经验后,自己动手改造了一下,顺便分享给有同样需求的 ...
- BAT-给文件右击菜单增加7-ZIP浏览功能
Reg给文件右击菜单增加7-ZIP浏览功能 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\用7-ZIP浏览(ZJQ)] ...
随机推荐
- 使用CoreProfiler/NanoProfiler实现跨平台&应用的整合性能调试
摘要 NanoProfiler是一个开源.NET性能调试类库,CoreProfiler是其.NET Core版本的实现.在之前的一些文章中,我曾介绍过NanoProfiler的主要使用方式,以及如何为 ...
- 精彩 JavaScript 代码片段
1. 根据给定的条件在原有的数组上,得到所需要的新数组. ——<JavaScript 王者归来> var a = [-1,-1,1,2,-2,-2,-3,-3,3,-3]; functio ...
- MFC背景透明
# 一: # typedef BOOL (WINAPI *lpfnSetLayeredWindowAttributes)(HWND hWnd, COLORREF crKey, BYTE bAlpha, ...
- WPF DataGrid 行选中相关
DataGrid选中行是有自带SelectionChanged的,可是当需要重复选中同一行时,该事件就不会触发了. 后来反复查资料找到了DataGrid上有个DataGridRow. DataGrid ...
- 使用Expression实现数据的任意字段过滤(2)
上一篇<使用Expression实现数据的任意字段过滤(1)>, 我们实现了通过CriteriaCollectionHandler对象来处理集合数据过滤.通过适当的扩展, 应该可以满足一般 ...
- 使用java泛型设计通用方法
泛型是Java SE 1.5的新特性, 泛型的本质是参数化类型, 也就是说所操作的数据类型被指定为一个参数. 因此我们可以利用泛型和反射来设计一些通用方法. 现在有2张表, 一张user表和一张stu ...
- java动态代理的2种实现方式
java的动态代理在接java的api上有说明,这里就不写了.我理解的代理: 对特定接口中特定方法的功能进行扩展,这就是代理.代理是通过代理实例关联的调用处理程序对象调用方法. 下面通过一个例子看一下 ...
- SSH框架使用注解简化代码
注释的优势: 1.最简单直接的优势就是减少了配置文件的代码量. 2.注释和Java代码位于一个文件中,而XML 配置采用独立的配置文件.配置信息和 Java 代码放在一起,有助于增强程序的内聚性.而采 ...
- 深度剖析 | 基于大数据架构的BI应用
说起互联网.电商的数据分析,更多的是谈应用案例,如何去实践数据化管理运营.而这里,我们要从技术角度分享关于数据的技术架构干货,如何应用BI. 原文是云猴网BI总经理王卫东在帆软大数据上的演讲,以下是整 ...
- Java输入输出常用类Scanner
Scaner类,使用获取键盘输入. public boolean DemoTest(){ Scanner input = new Scanner(System.in); System.out.prin ...