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

相关文章

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

解决若依微服务框架启动报错的问题

《解决若依微服务框架启动报错的问题》Invalidboundstatement错误通常由MyBatis映射文件未正确加载或Nacos配置未读取导致,需检查XML的namespace与方法ID是否匹配,... 目录ruoyi-system模块报错报错详情nacos文件目录总结ruoyi-systnGLNYpe

nginx配置错误日志的实现步骤

《nginx配置错误日志的实现步骤》配置nginx代理过程中,如果出现错误,需要看日志,可以把nginx日志配置出来,以便快速定位日志问题,下面就来介绍一下nginx配置错误日志的实现步骤,感兴趣的可... 目录前言nginx配置错误日志总结前言在配置nginx代理过程中,如果出现错误,需要看日志,可以把

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1