导航:首页 > 净水问答 > log4j过滤指定包

log4j过滤指定包

发布时间:2021-02-15 00:05:22

1. log4j怎样控制只输出自己写的代码的日志,不输出框架中的日志

1、输出两次是来因为自mylog配置有误:log4j.appender.myLog.Target=System.out,你应该是要改成一个输出到一个文件吧,控制台已经有输出了。

2、类名问题: private static Logger log = Logger.getLogger("myLog"); 这种写法也可以,在输出项配置中直接写一个%c或%l试试,应该没有用Ant运行吧,如果是Ant编译的话有一个DEBUG的选项要启用才行。

3、输出指定包的方法直接log4j.logger.包名。可以通过log4j.rootLogger=OFF来屏蔽其他输出。以下配置屏蔽SSH框架的日志输出:

log4j.logger.org.springframework=OFF
log4j.logger.org.apache.struts2=OFF
log4j.logger.com.opensymphony.xwork2=OFF
log4j.logger.com.ibatis=OFF
log4j.logger.org.hibernate=OFF

2. 如何通过配置log4j.xml来打印指定类或指定级别的日志信息


<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPElog4j:configurationSYSTEM"log4j.dtd"><log4j:configurationxmlns:log4j='http://jakarta.apache.org/log4j/'>
<!--appender部分是可用的日志输出方式定义,可以定义多个-->
<appendername="STDOUT"class="org.apache.log4j.ConsoleAppender">
<layoutclass="org.apache.log4j.PatternLayout">
<paramname="ConversionPattern"value="%l%d{ISO8601}--%p--%m%n"/>
</layout>
</appender>
<appendername="DEBUG"class="org.apache.log4j.RollingFileAppender">
<paramname="File"value="e:/logs/debug.log"/>
<paramname="Append"value="true"/>
<paramname="MaxFileSize"value="10000KB"/>
<paramname="MaxBackupIndex"value="50"/>
<layoutclass="org.apache.log4j.PatternLayout">
<paramname="ConversionPattern"value="%l%d{ISO8601}--%p--%m%n"/>
</layout>
<filterclass="org.apache.log4j.varia.LevelRangeFilter">
<paramname="LevelMin"value="DEBUG"/>
<paramname="LevelMax"value="DEBUG"/>
</filter>
</appender>
<appendername="INFO"class="org.apache.log4j.RollingFileAppender">
<paramname="File"value="e:/logs/info.log"/>
<paramname="Append"value="true"/>
<paramname="MaxFileSize"value="10000KB"/>
<paramname="MaxBackupIndex"value="50"/>
<layoutclass="org.apache.log4j.PatternLayout">
<paramname="ConversionPattern"value="%l%d{ISO8601}--%p--%m%n"/>
</layout>
<filterclass="org.apache.log4j.varia.LevelRangeFilter">
<paramname="LevelMin"value="INFO"/>
<paramname="LevelMax"value="INFO"/>
</filter>
</appender>
<appendername="WARN"class="org.apache.log4j.RollingFileAppender">
<paramname="File"value="e:/logs/warn.log"/>
<paramname="Append"value="true"/>
<paramname="MaxFileSize"value="10000KB"/>
<paramname="MaxBackupIndex"value="50"/>
<layoutclass="org.apache.log4j.PatternLayout">
<paramname="ConversionPattern"value="%l%d{ISO8601}--%p--%m%n"/>
</layout>
<filterclass="org.apache.log4j.varia.LevelRangeFilter">
<paramname="LevelMin"value="WARN"/>
<paramname="LevelMax"value="WARN"/>
</filter>
</appender>
<appendername="ERROR"class="org.apache.log4j.RollingFileAppender">
<paramname="File"value="e:/logs/error.log"/>
<paramname="Append"value="true"/>
<paramname="MaxFileSize"value="10000KB"/>
<paramname="MaxBackupIndex"value="50"/>
<layoutclass="org.apache.log4j.PatternLayout">
<paramname="ConversionPattern"value="%l%d{ISO8601}--%p--%m%n"/>
</layout>
<filterclass="org.apache.log4j.varia.LevelRangeFilter">
<paramname="LevelMin"value="ERROR"/>
<paramname="LevelMax"value="ERROR"/>
</filter>
</appender>


<appendername="WATCHTASK"class="org.apache.log4j.RollingFileAppender">
<paramname="File"value="e:/logs/watchtask.log"/>
<paramname="Append"value="true"/>
<paramname="MaxFileSize"value="10000KB"/>
<paramname="MaxBackupIndex"value="50"/>
<layoutclass="org.apache.log4j.PatternLayout">
<paramname="ConversionPattern"value="%l%d{ISO8601}--%p--%m%n"/>
</layout>
<filterclass="org.apache.log4j.varia.LevelRangeFilter">
<paramname="LevelMin"value="INFO"/>
<paramname="LevelMax"value="INFO"/>
</filter>
</appender>

<!--category部分定义了特定包或者类的输出级别和方式,可以有多个-->
<categoryname="org.apache">
<priorityvalue="warn"/>
<appender-refref="WARN"/>
</category>

<!--打印日志到固定的文件中WATCHTASK选择自定义的日志级别设置-->
<categoryname="com.test.task.WatchTimerTask">
<priorityvalue="info"/>
<appender-refref="WATCHTASK"/>
</category>

<!--root部分定义了log4j的默认输出级别和方式-->
<root>
<priorityvalue="warn"/>
<appender-refref="INFO"/>
<appender-refref="WARN"/>
<appender-refref="ERROR"/>
<appender-refref="STDOUT"/>

</root>
</log4j:configuration>
(1).输出方式appender一般有5种:org.apache.log4j.RollingFileAppender(滚动文件,自动记录最新日志)org.apache.log4j.ConsoleAppender(控制台)??org.apache.log4j.FileAppender(文件)org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)(2).日记记录的优先级priority,优先级由高到低分为OFF,FATAL,ERROR,WARN,INFO,DEBUG,ALL。Log4j建议只使用FATAL,ERROR,WARN,INFO,DEBUG这五个级别。(3).格式说明layout中的参数都以%开始,后面不同的参数代表不同的格式化信息(参数按字母表顺序列出):%c输出所属类的全名%d输出日志时间其格式为%d{yyyy-MM-ddHH:mm:ss,SSS},可指定格式如%d{HH:mm:ss}%l?输出日志事件发生位置,包括类目名、发生线程,在代码中的行数%n换行符%m输出代码指定信息,如info(“message”),输出message%p输出优先级,即FATAL,ERROR等%r输出从启动到显示该log信息所耗费的毫秒数%t输出产生该日志事件的线程名

3. java jar怎么把指定目录排除掉再进行打包

在项目的pom.xml文件里面添加如下配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<warName>loginweb</warName>
<outputDirectory>target</outputDirectory>
<!-- 排除 -->
<packagingExcludes>
WEB-INF/classes/*jdbc.properties,
WEB-INF/classes/*config.properties,regex[WEB-INF/lib/(?!log4j-1|common-1).*.*.jar]
</packagingExcludes>
</configuration>
</plugin>
配置说明:
1. WEB-INF/classes/*_jdbc.properties: 过滤 任何前缀的 _jdbc.properties 配置文件(如:我上篇博客自动打不同环境的包中提到的添加的不同环境的jdbc配置文件,那么在打包时候,排除自己添加的这个配置文件)
2. %regex[WEB-INF/lib/(?!log4j-1|common-1)...jar] 通过正在表达式配置打包时,排除除了log4j-1和common-1 的 1.任何版本的jar包。即打包时只添加这两个jar包到war包里面,其他的任何jar都排除不打包进去
(PS:为了tomcat 共享jar包,所以项目中不打jar,当然除了自己项目间相互依赖的jar,比如这个jar会经常自己修改,那么经常修改的,就不排除,打包时候把他们也打进去。对于tomcat如何共享jar包,后续再详细描述)
3. 如果有多个条件,用逗号隔开。对于packagingExcludes 的详细使用,请查看官网:
http://maven.apache.org/plugins/maven-war-plugin/examples/including-excluding-files-from-war.html

4. 你好,能问一下,用log4j输出日志的话。怎么配置成过滤器呢,也就是只要登录的我就输出所有的action的日志

在action的配置中配置拦截器,在拦截器里获取参数记录日志

5. Slf4j + Logback 怎么过滤掉第三方包中的日志显示

其实这跟 Slf4J 通用日志框架没什么关系,单单是 Logback 的事,把 Slf4J 扯进来只因它们是对黄金组合。
我们在 log4j 中想要不显示第三方包的非常冗余的日志输出时,只要在 log4j.properties 中写上:

1

log4j.logger.org.hibernate=ERROR

这样在 hibernate 里的日志级别在 ERROR 以下的 TRACE、DEBUG、WARN 和 INFO 将不被输出,控制台会比较的干净。
Logback 的配置文件是 logback.xml,曾经在里面给 <appender> 加的 <pattern> 是:

1

<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>

logger 名显示 35 字符,类名优先显示全,类全限名超过总长度则取前面若干包名的首字母连接起来,于是产生了像下面那样的日志输出:
7937 [main] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton
7781 [main] DEBUG o.h.loader.entity.EntityLoader - Static select for entity
这在 Log4J 中是未曾见过的。当时还以为日志名就是 o.s.b.f 这样的东西,于是在 logback.xml 中用

1
2

<logger name="o.s.b" level="WARN"/>
<logger name="o.h" level="WARN"/>

这样的代码来进行封锁,根本就无济于事,大量的 spring、hibernate 的 DEBUG、INFO 等日志照样输出。这时惦记起 Logback 的 filter 功能来了,配置上:

01
02
03
04
05
06
07
08
09
10
11

<filter>
<evaluator> <!-- defaults to type ch.qos.logback.classic.boolex.JaninoEventEvaluator -->
<expression><![CDATA[
event.getThreadName().contains("Catalina")
|| event.getLoggerName().contains("o.s.b.f")
|| event.getLoggerName().contains("o.h.")
]]></expression>
</evaluator>
<OnMismatch>NEUTRAL</OnMismatch>
<OnMatch>DENY</OnMatch>
</filter>

也是没有效果的。想来 Logback 与 Log4J 相比不会这么差劲的,再怎么也是出自一人之手,想来思路应是一致的,还是该回到 <logger> 的配置上来。
还是 Google 威武,找到答案了:logback per-logger configuration is not working。原来像 "o.s.b.f" 和 "o.h." 这样的东西只是神马浮云,假象而已,它们实际所代表的 logger 名并未变,分别是:
org.springframework.beans.factory.support.DefaultListableBeanFactory
org.hibernate.loader.entity.EntityLoader
所以呢,在 logback.xml 中像 Log4J 一样写上

1
2

<logger name="org.hibernate" level="WARN"/>
<logger name="org.springframework" level="WARN"/>

就把 Spring 和 Hibernate 的日志输出稍加过滤了,都是 %logger{35} 中的那个 {35} 惹的祸,不过也靠它多了解了一点东西。如果只写成 %logger 话那时候当然可以很快的解决问题的。

6. 如何排除掉jar包里的 log4j.properites

log4j调整日志的级别不输出,或者调整spring的日志级别
说实话,你的原意我没看太懂。

7. 怎么通过log4j文件控制jar包里面的日志输出

我们的抄程序里面使用了log4j来记录日志,客户要求我们不需要配置log4j.properties文件,然后打成jar包。

然后客户使用的使用可以通过他们的程序来控制我们的jar包里面的日志。

也就是说:如果客户端需要打我们的日志,我们告诉他们怎么修改log4j配置文件,这样我们的日志就能打出来。

8. 如何通过log4j文件控制jar包里面的日志输出

#DEBUG>INFO>ERROR
#Outputpattern:date[thread]prioritycategory-message
log4j.rootLogger=DEBUG,Console

#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d[%t]%-5p[%c]-%m%n

#spring
log4j.logger.org.springframework=INFO

#hibernate
log4j.logger.org.hibernate=INFO

#apache
log4j.logger.org.apache=ERROR

#broad
log4j.logger.com.miuthon.jpa=DEBUG

我相信这个比较容易懂

记得要log4j.jar 等相关jar包依赖才行哦

9. java 日志打印堆栈如何实现包级过滤

目前使用的来 log4j2.xml 方案打印的日自志。但因为 web 项目必然用到各种框架工具包之类的,导致打印的日志堆栈信息中,有很多 spring 的包中的类调用链。
想实现,打印的堆栈信息,只有我指定的包前缀的才打印出来。比如我们自己编写的一段代码执行时报错了,那么执行出现如下堆栈信息:
java.lang.NumberFormatException: null
at net.oschina.aaa(aaa.java:80) ~[classes/:?]
at net.oschina.bbb(bbb.java:70) ~[classes/:?]
at net.oschina.ccc(ccc.java:60) ~[classes/:?]
at net.oschina.ddd(ddd.java:50) ~[classes/:?]

10. log4j2 怎么才能不打印第三方包日志到日志文件中

<logger name="com.*.*" level="error">
<AppenderRef ref="Console"/>
<appender-ref ref="RUNNING-LOG" />
<appender-ref ref="ERROR-LOG" />
</logger>
这种来方式在本地启动控制自台确实是不打印info的日志了,但是在日志文件中还是记录了

阅读全文

与log4j过滤指定包相关的资料

热点内容
山东屠宰污水处理设备多少钱 浏览:736
铁雨中国形象 浏览:344
不卡看电视的网址 浏览:86
房间包厢电影 浏览:67
青海废水处理氨氮超标怎么处理 浏览:636
混凝土污水使用记录表 浏览:986
适量污水对鱼类有什么影响 浏览:296
琼天电影院今日影讯 浏览:570
木碳烧烤炉滤芯清洗一次多少钱 浏览:21
一般超滤机 浏览:512
瑜伽老师韩国爱情电影韩国爱情电影在线观看 浏览:91
沁园饮水机突然响怎么回事 浏览:757
厂里的污水如何正确排放 浏览:498
卡迪斯净水器缺水怎么办 浏览:381
有一部什么电影喷奶了 浏览:567
污水处理厂运行管理培训会 浏览:302
为什么净水壶出来的水都是甜的 浏览:540
private电影公司作品 浏览:266
纹理过滤负lod锁定 浏览:376
韩片哪个网站 浏览:832