介绍
框架默认实现了一个简单的文件日志记录器,如果需要功能强大的日志组件,请使用NLog组件。使用相对简单,具体用法请参考官网,对于常规应用来说,框架自带的日志组件已经够用。
配置
在框架配置文件app.json中添加日志配置内容
{"Log": {//日志输出级别:debug(调试) → info(消息) → warn(警告) → error(错误) → none(不输出)"Level": "info",//消息模板 {CallClass},调用所在类 {CallMethod} 调用所在方法 {LogLevel} 日志级别 {CreateDateTime} 创建日期 {Tag} 标签 {Message} 日志消息"MessageTemplate": "{CallClass}.{CallMethod} {LogLevel} {CreateDateTime} {Tag} {Message}",//日志输出目录,默认为根目录下的Log目录(基于日期掩码)({root}软件输出根目录)"Dir": "{root}\\Log\\{yyyy-MM}",//日志文件名(基于日期掩码),不含扩展名"FileName": "{yyyy-MM-dd}",//文件大小限制,单位为K,0表示不限制,默认:200M(204800KB),文件大小超过此大小时,文件会新建。"FileSizeLimit": 204800,//是否自动删除历史文件"AutoDelete": true,//自动删除多久之前的日志文件,默认:30天"AutoDeleteTimeSpan": "30.00:00:00",//过期文件轮询时间间隔,默认:1小时"AutoDeleteInterval": "01:00:00",//队列缓冲区大小,默认:10万"QueueBufferSize": 1000000,//文件写入缓冲区大小,默认:2000(如果写入文件缓冲区超过此值,则开始写入文件)"WriteBufferSize": 2000,//文件写入间隔时间,默认:10秒(如果文件写入缓冲区未满,达到此时间时把文件写入缓存区的数据写入文件)"WriteInterval": "00:00:10",}}
配置项
using System;namespace XCI.Logger{/// <summary>/// 文件日志配置/// </summary>public class FileLoggerConfig{/// <summary>/// 日志输出级别,默认是Info(消息)级别。/// 打印次序:Debug(调试) → Info(消息) → Warn(警告) → Error(错误) → None(不输出)/// </summary>public LoggerLevel Level = LoggerLevel.Info;/// <summary>/// 消息模板/// {CallClass} 调用所在类/// {CallMethod} 调用所在方法/// {LogLevel} 日志级别/// {CreateDateTime} 创建日期/// {Tag} 标签/// {Message} 日志消息/// </summary>public string MessageTemplate { get; set; } = "{CallClass}.{CallMethod} {LogLevel} {CreateDateTime} {Tag} {Message}";/// <summary>/// 日志输出目录,默认为根目录下的Log目录(基于日期掩码)({root}软件输出根目录)/// <para>/// 按月建立文件夹:{root}\\Log\\{yyyy-MM}/// 按日建立文件夹:{root}\\Log\\{yyyy-MM-dd}/// </para>/// </summary>public string Dir { get; set; } = "{root}\\Log\\{yyyy-MM}";/// <summary>/// 日志文件名(基于日期掩码),不含扩展名/// </summary>public string FileName { get; set; } = "{yyyy-MM-dd}";/// <summary>/// 文件大小限制,单位为K,0表示不限制,默认:200M(204800KB)/// 文件大小超过此大小时,文件会新建。/// </summary>public long FileSizeLimit { get; set; } = ((long)200 * 1024);/// <summary>/// 是否自动删除历史文件/// </summary>public bool AutoDelete { get; set; } = true;/// <summary>/// 自动删除多久之前的日志文件,默认:30天/// </summary>public TimeSpan AutoDeleteTimeSpan { get; set; } = TimeSpan.FromDays(30);/// <summary>/// 过期文件轮询时间间隔,默认:1小时/// </summary>public TimeSpan AutoDeleteInterval { get; set; } = TimeSpan.FromHours(1);/// <summary>/// 队列缓冲区大小,默认:10万/// </summary>public int QueueBufferSize { get; set; } = 100000;/// <summary>/// 文件写入缓冲区大小,默认:2000(如果写入文件缓冲区超过此值,则开始写入文件)/// </summary>public int WriteBufferSize { get; set; } = 2000;/// <summary>/// 文件写入间隔时间,默认:10秒(如果文件写入缓冲区未满,达到此时间时把文件写入缓存区的数据写入文件)/// </summary>public TimeSpan WriteInterval { get; set; } = TimeSpan.FromSeconds(10);}}
使用
直接在需要记录日志的地方使用下面的代码
LoggerFactory.Default.Debug("调试日志");LoggerFactory.Default.Info("消息日志");LoggerFactory.Default.Warn("警告日志");LoggerFactory.Default.Error("错误日志");
