Log4j结合spring的使用配置

机器学习参数寻优:方法、实例与分析 机器学习模型的性能很大程度上依赖于其参数的选择。参数寻优(Hyperparameter Tuning)是提升模型表现的关键步骤之一。本文将详细介绍主流的参数寻优方法,包括网格搜索(Grid Search)、随机搜索(Random Search)、贝叶斯优化(Bayesian Optimization)、和超参数优化库(如Optuna和Hyperopt)等,并探讨它们的优缺点及适用场景。 阅读详情
 

在我们的日常开发中,日志记录非常重要。 我们可以在测试中检测代码变量变化,跟踪代码运行轨迹。同时也可以创建一些基本的应用级别日志功能。 Log4j是Apache的一个开放源代码项目,它提供了一种细腻的日志管理方式。 通过一个配置文件,我们可以多选择的控制每条日志的输出格式和目的地。通过定义信息的级别,我们也可以灵活开关代码中的反馈信息。在本文中,我们使用log4j在Spring环境的配置来演示日志功能的使用。

在web.xml中的定义:

<context-param>
  <param-name>webAppRootKey</param-name>
  <param-value>webApp.root</param-value>
 </context-param>

  <context-param>
  <param-name>log4jConfigLocation</param-name>
  <param-value>/WEB-INF/classes/log4j.properties</param-value>
 </context-param>

   <context-param>
      <param-name>log4jRefreshInterval</param-name>
      <param-value>60000</param-value>
   </context-param>  
    <listener>
      <listener-class>
        org.springframework.web.util.Log4jConfigListener
      </listener-class>
   </listener>

 

实际应用中,我们在web.xml定义如下配置:首先log4jConfigLocation类定义log4j配置文件路径。 Log4J's watchdog thread will asynchronously check whether the timestamp of the config file has changed, using the given interval between checks. A refresh interval of 1000 milliseconds (one second), which allows to do on-demand log level changes with immediate effect, is not unfeasible.

Log4jConfigListener是spring提供的工具类,它开启一个log4j的监视线程,并每60(log4jRefreshInterval变量定义)秒检测日志配置变化,从而不需要每次重新启动web服务来应用新的配置。在tomcat中没有根据web应用来分开系统属性。所以必须为每一个web应用定义唯一的 "webAppRootKey",我们取名为webApp.root. 在启动环境后,Log4jConfigListener 会将某某值注入到webApp.root变量。具体什么值,为什么我们这样定义,请继续往下来看。

下面的工作该log4j.properties的配置了。spring也支持xml的配置文件格式。 在项目中经常会有不同的日志需求,比如数据库操作日志,邮件日志 或者 用户操作日志。我们可以输出所有的日志到统一的文件,也可以根据功能模块来定义不同的日志文件。

log4j.logger.uk.salford.ian.site.mvc=DEBUG,stdout,model log4j.logger.uk.salford.ian.site.service=DEBUG,stdout,db

在本例中,我们对两个功能模块做不同的日志定义。uk.salford.ian.site.mvc 和 uk.salford.ian.site.service 为同一项目的两个包, 分别代表mvc模块和service服务模块。log4j支持包级的日志定义,所以我们可以根据不同的功能模块做相应的定义。并且值得注意的是,log4j支持包日志的继承。任何子包在mvc或者service下,可以继承父的日志定义。 DEBUG,stdout,model:DEBUG代表日志的信息显示级别。级别分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。 stdout,model 为 两个自定义的 appender 名称。

其中,Log4j提供的appender有以下几种:     org.apache.log4j.ConsoleAppender(控制台),     org.apache.log4j.FileAppender(文件),     org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),     org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),     org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)   下面我们再来看appender的定义

log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5r [%5p][%c{2}] %m%n

stdout使用控制台appender,所有日志信息将直接显示到控制台。mvc和sevice不同的是,它们还使用自己唯一的appender:model 和db,这样日志信息将会被相应的两个appender来管理。

model日志的定义: log4j.appender.model=org.apache.log4j.RollingFileAppender log4j.appender.model.File=${webApp.root}/WEB-INF/logs/model/model.log log4j.appender.model.Append=true log4j.appender.model.MaxFileSize=1MB log4j.appender.model.MaxBackupIndex=1 log4j.appender.model.layout=org.apache.log4j.PatternLayout log4j.appender.model.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%n

我们将model里日志信息输出到${webApp.root}/WEB-INF/logs/model/model.log。 一个特别需要注意的地方是:log4j.appender.model.File=${webApp.root}/WEB-INF/logs/model/model.log 我们输出信息到${webApp.root}/WEB-INF/logs/model/model.log。其中webApp.root值从哪儿来的呢,还记得我们在web.xml的定义吗,在listener工作的时候,它就将网站目录路径注入到我们自定义的webApp.root变量。这样,我们可以使用相对路径来管理日志路径,而不是写成绝对的 d:/log.log,诸如此类。

下面是db的定义,我们输出db操作的日志信息输出到db目录下的db文件。

log4j.appender.db=org.apache.log4j.FileAppender log4j.appender.db.File=${webApp.root}/WEB-INF/logs/db/db.log log4j.appender.db.Append=true log4j.appender.db.layout=org.apache.log4j.PatternLayout log4j.appender.db.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%n

最后是在类中的调用,非常简单

 @InjectDisable  static Logger logger = Logger.getLogger(IndexAction.class);         logger.debug("it's show time?################################");         logger.error("错误了吗.好象没有 ################################");         logger.info("info就info撒################################");

注意:@InjectDisable是Easyjf中需要的。默认情况下,Easyjf会将属性自动注入,通过@InjectDisable,我们可以关闭注入来自己管理属性值。

Cadence Allegro通过手工绘制板框的方法 Cadence Allegro通过手工绘制板框的方法 Cadence Allegro绘制板框有三个方法: 1、通过手工绘制板框; 2、通过向导绘制板框; 3、通过导入DXF文件导绘制板框; 本章将教会大家如何通过手工的方法绘制100mm的矩形板框。 方法步骤如下: 一、通过放置绘图工具2D线绘制; 1、运行Cadence Allegro软件,打开File菜单栏,选择New。 2、这时软件会弹出Ne... 阅读详情

相关推荐

Springlog4j以及配置文件

Spring4.3.7的log4j以及配置文件Spring4.3.7的log4j以及配置文件Spring4.3.7的log4j以及配置文件

Spring Log4j 配置手册

 在我们的日常开发中,日志记录非常重要。 我们可以在测试中检测代码变量变化,跟踪代码运行轨迹。同时也可以创建一些基本的应用级别日志功能。 Log4j是Apache的一个开放源代码项目,它提供了一种细腻的日志管理方式。 通过一个配置文件,我们可以多选择的控制每条日志的输出格式和目的地。通过定义信息的级别,我们也可以灵活开关代码中的反馈信息。在本文中,我们使用log4jSpring环境的配置来演

songjch116的专栏 1万+

油气开采中基于分布式光纤温度测试的水平井产出剖面理论与实现(复现论文,含详细可运行代码及解释)

内容概要:本文围绕基于分布式光纤温度测试的水平井产出剖面解释理论展开研究,主要包括建立温度预测模型、井筒和油藏耦合模型及反演算法等内容。利用Python语言实现并优化油藏渗流模型、热力学模型及井筒流体模型等,同时采用蒙特卡罗马尔科夫链(MCMC)反演渗透率,从而提高模型精度,并进行详细的数值实验与结果验证。最终形成了一个从数据收集、建模、反演直至结果可视化的完整流程。适合人群:适用于石油工程及相关领域的科研工作者和技术人员,特别关注分布式光纤传感技术在水平井生产监测中的应用人员。使用场景及目标:用于指导油气田水平井产量监控和生产管理,帮助确定最佳采收策略以提高油气回收效率。其他说明:代码实施部分虽做了适当简化以便理解和运行,但在真实世界的应用中还需根据实际情况调整模型参数,并考虑地质特征等因素的影响。

Log4j2——SpringBoot集成及配置属性介绍

概述: 一般经常能听到日志组件有log4j, log4j2, logback,以及slf4j。 首先slf4j是一个简单的门面模式,意思就是说这只是一个日志标准,并不是日志系统的具体实现,slf4j只做两件事:提供日志接口和提供获取具体日志对象的方法。 至于log4j,已经在几年前停止更新了 logback是log4j的升级版,目前是springboot的默认日志组件 log4j2相对于...

大菠萝一号 3258

Spring使用log4j详细配置

第一步:导入log4j-1.2.17.jar包。 第二步:src同级创建并设置log4j.propertieslog4j.properties的详细配置: ### 设置### log4j.rootLogger = debug,stdout,D,E### 输出信息到控制抬 ### log4j.appender.stdout = org.apache.log4j.ConsoleAppen

LuisChen的博客 1260

java log4j扩展_Log4j2 Lookup扩展之支持Spring环境变量解析

应用背景为了规范统一所有微服务应用中的log4j2配置, 默认所有应用在启动时读取统一URL指向的log4j2.yml文件,lo4j2.yml文件中预留了应用名等占位符, 需要从Spring上下文环境中解析占位符。log4j2配置占位符解析解析时机初始化log4j2上下文时对其中的占位符进行解析。日志打印格式中配置的占位符输出日志时解析。解析原理主要根据占位符的前缀寻找合适的Lookup解析相关变...

weixin_42319263的博客 1477

Spring 日志配置log4j.properties步骤:

2.在resources文件下建log4j.properties并打入如下代码。在 运行后会自动生成一个log包,里面可以查看所有操作日志。3.在mybatis-config.xml中写如下代码。1.首先在pom.xml打入依赖,代码如下。最后run了看控制台就出现日志了。### 输出到日志文件 ###### 输出到控制台 ###

m0_62996549的博客 669

log4j 结合 spring 配置加载机制

log4jspring结合使用机制

gezehao的专栏 3129

Log4j结合spring使用配置2

在我们的日常开发中,日志记录非常重要。 我们可以在测试中检测代码变量变化,跟踪代码运行轨迹。同时也可以创建一些基本的应用级别日志功能。Log4j是Apache的一个开放源代码项目,它提供了一种细腻的日志管理方式。通过一个配置文件,我们可以多选择的控制每条日志的输出格式和目的地。通过定义信息的级别,我们也可以灵活开关代码中的反馈信息。在本文中,我们使用log4jSpring环境的配置

508

spring框架结合log4j2日志框架配置文件项

Maven 项目的pom.xml文件的依赖jar包 <dependencies> <!--日志 start--> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17&l...

hum的博客 380

log4j的基本使用配置文件

xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"&g.

冰冰凉的博客 1万+

log4jspring配置文件中使用系统属性

一、log4j使用系统属性 1、指定log4j 日志文件保存目录 如果有需要自定义日志保存目录根据根据项目部署目录相对路径来保存,那么我们就可以这们做: 可以在ServletContextListener 中获取 tomc...

330

log4j2.xml 使用 application.yml 配置的属性

log4j

xiaokanfuchen86的博客 2995

SpringBoot+log4j2.xml使用application.yml属性值

项目中有个需求,需要log4j2.xml加载application.yml的属性,折腾了半天,贴代码吧: 1.自定义启动监听ApplicationStartedEventListener,代码中标红的就是从yml中读取的属性,然后通过MDC设置到log4j2的上下文 package com.wm.dcm.utils; import org.slf4j.MDC; impor...

weixin_30558305的博客 1565

Java学习笔记——Log4j配置Spring使用Log4j

Java日志记录 一、简介 在开发过程中做好日志记录是必不可少的一部分。在线上追踪问题,分析业务逻辑快速定位错误原因,精准解决问题必离不开日志。Java中实现这一功能的狂爱很多,目前常用的有Log4j1、Log4j2、Commons Logging、Slf4j等等。 1、常用框架简介 Log4jLog4j是Apache的一个开源项目,通过Log4j,可以通过配置文件精...

DivingKitten Coding驿站 2696
上一篇: tomcat_conf_server说明
下一篇: log4j中配置日志文件相对路径方法分析
ksbry
博客等级 码龄21年 2粉丝 12原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值