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

相关文章

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

SpringBoot如何使用TraceId日志链路追踪

《SpringBoot如何使用TraceId日志链路追踪》文章介绍了如何使用TraceId进行日志链路追踪,通过在日志中添加TraceId关键字,可以将同一次业务调用链上的日志串起来,本文通过实例代码... 目录项目场景:实现步骤1、pom.XML 依赖2、整合logback,打印日志,logback-sp

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

我在移动打工的日志

客户:给我搞一下录音 我:不会。不在服务范围。 客户:是不想吧 我:笑嘻嘻(气笑) 客户:小姑娘明明会,却欺负老人 我:笑嘻嘻 客户:那我交话费 我:手机号 客户:给我搞录音 我:不会。不懂。没搞过。 客户:那我交话费 我:手机号。这是电信的啊!!我这是中国移动!! 客户:我不管,我要充话费,充话费是你们的 我:可是这是移动!!中国移动!! 客户:我这是手机号 我:那又如何,这是移动!你是电信!!

数据治理框架-ISO数据治理标准

引言 "数据治理"并不是一个新的概念,国内外有很多组织专注于数据治理理论和实践的研究。目前国际上,主要的数据治理框架有ISO数据治理标准、GDI数据治理框架、DAMA数据治理管理框架等。 ISO数据治理标准 改标准阐述了数据治理的标准、基本原则和数据治理模型,是一套完整的数据治理方法论。 ISO/IEC 38505标准的数据治理方法论的核心内容如下: 数据治理的目标:促进组织高效、合理地

ZooKeeper 中的 Curator 框架解析

Apache ZooKeeper 是一个为分布式应用提供一致性服务的软件。它提供了诸如配置管理、分布式同步、组服务等功能。在使用 ZooKeeper 时,Curator 是一个非常流行的客户端库,它简化了 ZooKeeper 的使用,提供了高级的抽象和丰富的工具。本文将详细介绍 Curator 框架,包括它的设计哲学、核心组件以及如何使用 Curator 来简化 ZooKeeper 的操作。 1