ABP框架—后台:日志log4net(9)

2023-12-18 11:58
文章标签 日志 框架 后台 log4net abp

本文主要是介绍ABP框架—后台:日志log4net(9),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、Nuget引入log4net依赖包


如图:

官方地址:http://logging.apache.org/log4net


二、Startup中配置log4net

在ConfigureServices方法中使用容器添加log4net以及配置log4net.config

public class Startup
{public IServiceProvider ConfigureServices(IServiceCollection services){//.............//.............// Configure Abp and Dependency Injectionreturn services.AddAbp<PDWebHostModule>(// Configure Log4Net loggingoptions => options.IocManager.IocContainer.AddFacility<LoggingFacility>(f => f.UseAbpLog4Net().WithConfig("log4net.config")));}
}

二、log4net.config配置


默认配置:

<?xml version="1.0" encoding="utf-8" ?>
<log4net><appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender" ><file value="App_Data/Logs/Logs.txt" />  --写入制定文件<appendToFile value="true" />    --true 日志追加写入文件--Size 文件大小进行拆分日志文件Logs.txt --创建新文件的方式,可选为Size(按文件大小),Date(按日期),Once(每启动一次创建一个文件),Composite(按日期及文件大小),默认为Composite<rollingStyle value="Size" />    --备份日志数目,默认为0。在CountDirection为负数时有效。<maxSizeRollBackups value="10" />--当RollingStyle为Composite或Size,这里设置最大文件大小(可以KB,MB,GB为单位,默认为字节)<maximumFileSize value="10000KB" />--True 日志文件是否为静态--True/false,默认为true。为true时,RollingStyler的date值将无效。且为true时,需要在file里指定文件名,所有日志都会记录在这个文件里。<staticLogFileName value="true" /> <layout type="log4net.Layout.PatternLayout"><conversionPattern value="%-5level %date [%-5.5thread] %-40.40logger - %message%newline" />   --日志格式</layout></appender><root><appender-ref ref="RollingFileAppender" />--Log4net的日志等级从低到高依次分为:ALL ---> DEBUG ---> INFO ---> WARN ---> ERROR ---> FATAL ---> OFF--DEBUG及DEBUG以下级别都进行记录日志<level value="DEBUG" /> </root>
</log4net>

当需要把不同级别日志进行分文件记录时,进行如下配置:
 

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="DebugRollingFileAppender" type="log4net.Appender.RollingFileAppender" LEVEL="DEBUG"><file value="App_Data/Logs/Debug/" /> --日志文件路径 <appendToFile value="true" /><DatePattern value="yyyy-MM-dd_HH&quot;.txt&quot;"/> --日志文件命名格式<RollingStyle value="Date"/>  --Date日期命名<staticLogFileName value="false" />  --false 日志文件动态命名<layout type="log4net.Layout.PatternLayout"><conversionPattern value="%-5level %date [%-5.5thread] %-40.40logger - %message%newline" /></layout><filter type="log4net.Filter.LevelRangeFilter"><param name="LevelMin" value="DEBUG" /><param name="LevelMax" value="DEBUG" /></filter></appender><appender name="InfoRollingFileAppender" type="log4net.Appender.RollingFileAppender" LEVEL="INFO"><file value="App_Data/Logs/Info/" /><appendToFile value="true" /><DatePattern value="yyyy-MM-dd_HH&quot;.txt&quot;"/><RollingStyle value="Date"/><staticLogFileName value="false" /><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%-5level %date [%-5.5thread] %-40.40logger - %message%newline" /></layout><filter type="log4net.Filter.LevelRangeFilter"><param name="LevelMin" value="INFO" /><param name="LevelMax" value="INFO" /></filter></appender><appender name="WarnRollingFileAppender" type="log4net.Appender.RollingFileAppender" LEVEL="WARN"><file value="App_Data/Logs/Warn/" /><appendToFile value="true" /><DatePattern value="yyyy-MM-dd&quot;.txt&quot;"/><RollingStyle value="Date"/><staticLogFileName value="false" /><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%-5level %date [%-5.5thread] %-40.40logger - %message%newline" /></layout><filter type="log4net.Filter.LevelRangeFilter"><param name="LevelMin" value="WARN" /><param name="LevelMax" value="WARN" /></filter></appender><appender name="ErrorRollingFileAppender" type="log4net.Appender.RollingFileAppender" LEVEL="ERROR"><file value="App_Data/Logs/Error/" /><appendToFile value="true" /><DatePattern value="yyyy-MM-dd&quot;.txt&quot;"/><RollingStyle value="Date"/><staticLogFileName value="false" /><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%-5level %date [%-5.5thread] %-40.40logger - %message%newline" /></layout><filter type="log4net.Filter.LevelRangeFilter"><param name="LevelMin" value="ERROR" /><param name="LevelMax" value="ERROR" /></filter></appender><root><level value="All" /><appender-ref ref="DebugRollingFileAppender" /><appender-ref ref="InfoRollingFileAppender" /><appender-ref ref="WarnRollingFileAppender" /><appender-ref ref="ErrorRollingFileAppender" /></root></log4net>

三、手动记录日志

当程序运行时,ABP内部已经记录了日志,如果我们需要更加详细的手动记录日志也是可以的。 在Application应用服务中记录日志

public class MenuAppService : PDAppServiceBase,IMenuAppService
{public ILogger Logger { get; set; }public MenuAppService(){Logger = NullLogger.Instance;}public void Get(){Logger.Info("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");}
}

说明:Log4Net的abp官方说明https://aspnetboilerplate.com/Pages/Documents/Logging#config

这篇关于ABP框架—后台:日志log4net(9)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/508293

相关文章

Sapphire开发日志 (十) 关于页面

关于页面 任务介绍 关于页面用户对我组工作量的展示。 实现效果 代码解释 首先封装一个子组件用于展示用户头像和名称。 const UserGrid = ({src,name,size,link,}: {src: any;name: any;size?: any;link?: any;}) => (<Box sx={{ display: "flex", flexDirecti

[分布式网络通讯框架]----Zookeeper客户端基本操作----ls、get、create、set、delete

Zookeeper数据结构 zk客户端常用命令 进入客户端 在bin目录下输入./zkCli.sh 查看根目录下数据ls / 注意:要查看哪一个节点,必须把路径写全 查看节点数据信息 get /第一行代码数据,没有的话表示没有数据 创建节点create /sl 20 /sl为节点的路径,20为节点的数据 注意,不能跨越创建,也就是说,创建sl2的时候,必须确保sl

【服务器08】之【游戏框架】之【加载主角】

首先简单了解一下帧率 FixedUpdate( )   >   Update( )   >   LateUpdate( ) 首先FixedUpdate的设置值 默认一秒运行50次 虽然默认是0.02秒,但FiexedUpdate并不是真的0.02秒调用一次,因为在脚本的生命周期内,FixedUpdate有一个小循环,这个循环也是通过物理时间累计看是不是大于0.02了,然后调用一次。有

Java中的集合框架使用技巧

Java中的集合框架使用技巧 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨Java中集合框架的使用技巧,这些技巧能够帮助我们更高效地处理数据和优化程序性能。 Java集合框架概述 Java集合框架提供了一组实现了各种集合接口的类和接口,用于存储和操作数据。它包括列表、集合、队列和映射等数据结构,能够满足不

[分布式网络通讯框架]----ZooKeeper下载以及Linux环境下安装与单机模式部署(附带每一步截图)

首先进入apache官网 点击中间的see all Projects->Project List菜单项进入页面 找到zookeeper,进入 在Zookeeper主页的顶部点击菜单Project->Releases,进入Zookeeper发布版本信息页面,如下图: 找到需要下载的版本 进行下载既可,这里我已经下载过3.4.10,所以以下使用3.4.10进行演示其他的步骤。

Tkinter和selenium结合实现登录UC后台,最后打包成exe

主要实现的功能:小号模式自动登录UC阿里汇川广告后台,屏蔽账号密码输入 主要用的技术:用Tkinter展示所有的广告账号界面,使用selenium控制谷歌浏览器,打开阿里汇川登录页,登录汇川后台。 第一次写,遇到的坑比较多,三天,搞定。给自己一个棒棒~☺️ import Tkinter as tk import osimport sysimport requestsfrom sel

linux匹配Nginx日志,某个字符开头和结尾的字符串

匹配 os=1 开头, &ip结尾的字符串 cat 2018-06-07.log | egrep -o ‘os=1.*.&ip’ 存入日志。然后使用submit 前面和后面的值去掉,剩下就是需要的字符串。 cat 2018-06-07.log | egrep -o ‘os=1.*.&ip’ >log.log

springboot学习02-[热部署和日志]

热部署和日志 热部署 热部署

C# 日志框架Serilog使用

1、框架和说明        C#日志框架Serilog支持多种场景输出,简单验证了一下,比较方便        包的安装,推荐直接使用“推荐NuGet包管理器”安装Serilog.AspNetCore,常见的组件都已经集成在一个包中,使用比较方便 2、配置文件        Serilog可以由配置文件来定义行为,而且配置文件的修改即时生效。参考配置文件如下: {"Serilog":

Pytest和Unitest框架对比

在学到自动化的时候,很多同学都遇到了Pytest和Unitest框架,有的人是两个都学,但是学的不精只是知道分别怎么用.不了解两个区别是什么.有的是犹豫到底要学习那个框架.其实要做好自动化测试,是有必要了解不同框架之间的差异化的. Pytest 特点: Pytest采用了更简洁、更灵活的语法风格,使用“assert”语句来进行断言,Pytest可以自动发现并执行以“test_”开头的函数