基于web项目log日志指定输出文件位置配置方法
作者:Smile_Miracle 发布时间:2021-10-04 09:25:27
标签:日志,输出,文件,位置,log
首先我们定义一个可以在运行时动态的找出项目的路径WebAppRootKey,这么做的原因是为了在后面配置log4j输出文件路径的时候能随心配置。
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>amt.root</param-value>
</context-param>
然后要定义项目log配置文件的路径以及log4j *
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:conf/log4j.xml</param-value>
</context-param>
<!--定义LOG4J * -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
这样web.xml文件的配置完毕,然后就是log配置文件的具体配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>
<!-- 将日志信息输出到控制台 -->
<appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
<!-- 设置日志输出的样式 -->
<layout class="org.apache.log4j.PatternLayout">
<!-- 设置日志输出的格式 -->
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" />
</layout>
<!--过滤器设置输出的级别-->
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<!-- 设置日志输出的最小级别 -->
<param name="levelMin" value="INFO" />
<!-- 设置日志输出的最大级别 -->
<param name="levelMax" value="ERROR" />
<!-- 设置日志输出的xxx,默认是false -->
<param name="AcceptOnMatch" value="true" />
</filter>
</appender>
<!-- 将日志信息输出到文件,可以配置多久产生一个新的日志信息文件 -->
<appender name="rollingFile" class="org.apache.log4j.DailyRollingFileAppender">
<!-- 设置日志信息输出文件全路径名 -->
<param name="File" value="${amt.root}/logs/spdbData.log" />
<!-- 设置日志每小时回滚一次,即产生一个新的日志文件 -->
<param name="DatePattern" value="'_'yyyy-MM-dd-HH'.log'" />
<!-- 设置日志输出的样式 -->
<layout class="org.apache.log4j.PatternLayout">
<!-- 设置日志输出的格式 -->
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" />
</layout>
</appender>
<!--
注意:
1:当additivity="false"时,root中的配置就失灵了,不遵循缺省的继承机制
2:logger中的name非常重要,它代表记录器的包的形式,有一定的包含关系,试验表明
2-1:当定义的logger的name同名时,只有最后的那一个才能正确的打印日志
2-2:当对应的logger含有包含关系时,比如:name=test.log4j.test8 和 name=test.log4j.test8.UseLog4j,则2-1的情况是一样的
2-3:logger的name表示所有的包含在此名的所有记录器都遵循同样的配置,name的值中的包含关系是指记录器的名称哟!注意啦!
3:logger中定义的level和appender中的filter定义的level的区间取交集
4:如果appender中的filter定义的 levelMin > levelMax ,则打印不出日志信息
-->
<!--指定logger的设置,additivity指示是否遵循缺省的继承机制 -->
<logger name="test.log4j.test8.UseLog4j_" additivity="false">
<level value ="ERROR"/>
<appender-ref ref="rollingFile"/>
</logger>
<!-- 根logger的设置-->
<root>
<level value ="info"/>
<appender-ref ref="ConsoleAppender"/>
<appender-ref ref="rollingFile"/>
</root>
</log4j:configuration>
项目结构如下:
一切准备就绪之后,项目一旦启动你就能在你规定的输出位置找到你每天或者每个小时的日志文件,log配置文件还可以进行拓展配置每个文件的大小以及文件出错时的回滚事宜,这里不做赘述。
来源:https://blog.csdn.net/Smile_Miracle/article/details/76849830


猜你喜欢
- 目前的应用市场上,使用毛玻璃效果的APP随处可见,比如用过微信语音聊天的人可以发现,语音聊天页面就使用了高斯模糊效果。先看下效果图:&nbs
- 目录1、简介2、访问修饰符3、原则总结1、简介访问修饰符是Java语法中很基础的一部分,但是能正确的使用Java访问修饰符的程序员只在少数。
- 本文实例为大家分享了struts2实现文件上传下载的具体实现代码,供大家参考,具体内容如下一、文件上传 struts提交的文件组件上传, 前
- 一、类成员的访问级别public:可由任何代码访问。private(默认):只能由类中的代码访问。internal:只能由它所在的项目(程序
- 这篇文章主要介绍了Spring Bean初始化及销毁多种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- 在实际项目中,在处理较大的文件时,常常将文件拆分为多个子文件进行处理,最后再合并这些子文件。下面就为各位介绍下Java中合并多个文件的方法。
- 要实现关机后数据也不会丢失,需要使用到 AndroidViewModel,SaveStateHandle 和 SharePreference
- 1. 创建自定义 * 类并实现 HandlerInterceptor 接口package com.xgf.online_mall.inter
- 本文实例讲述了Java Socket实现传输压缩对象的方法。分享给大家供大家参考,具体如下:前面文章《Java Socket实现的传输对象功
- 任何简单操作的背后,都有一套相当复杂的机制。本文将以SpringBoot应用的在Docker环境下的打包部署为例,详细讲解如何使用Jenki
- 最近有很多同学,竟然不知道如何使用Intellij IDEA打开Java项目并启动现在来讲一下,希望不要忘记了 1、打开IDEA开机页面 M
- 本文实例讲述了Java编程调用微信分享功能。分享给大家供大家参考,具体如下:这篇文章介绍如何使用java开发微信分享功能,因为工作,已经开发
- 本文实例讲述了android获取当前运行Activity名字的方法,可以避免即时聊天再出现通知的情况。分享给大家供大家参考。具体方法如下:最
- Java 使用getClass().getResourceAsStream()方法获取资源之前想获取一个资源文件做一些处理,使用getCla
- 最近被.net winform中的控件布局搞困惑了,由于控件都是使用Dock方式的,操作起来也是比较方便,如果最大化,窗口大小调整等,都可以
- 本文实例讲述了Android程序启动时出现黑屏问题的解决方法。分享给大家供大家参考,具体如下:关于黑屏:默认的情况下,程序启动时,会有一个黑
- 前言前段时间看到一道面试题:“main函数可以被重载么?”,当时就蒙圈了,怎么还会有这种面试题,现在
- 前言Activity可以获取运行中的应用信息,可以获取到servcie,process,app,memory,Task信息等。获取信息Act
- Mybatis-plus全局id生成策略在配置文件中加入以下代码后就不需要在实体类种的id上添加@TableId(value = “id”,
- 1,创建存储过程create proc Pro_Login(@UserName nvarchar(10),@PassWord nvarcha