导航:首页 > 编程语言 > log4j配置java

log4j配置java

发布时间:2023-04-17 10:11:14

A. 怎样添加java的log4j添加到java项目中

首先,弄到log4j的jar包,maven工程配置以下依赖就行,或者,从阿里的maven仓库下载jar包,添加到工程的“build path”log4j log4j 1.2.17

然后,整一个log4j.properties,内容如下,然后把它放在src/main/java目录(也就是包所在的根目录)

1、普通java工程或spring工程

这是最常见的java工程类型,写demo用的多,把log4j.properties放在src/main/java目录(也就是包所在的根目录)就行了

2、spring mvc工程

web工程里用spring mvc构建的比较多了,把log4j.properties放在src/main/resources的conf目录(web工

程配置文件通常在resources或WEB-INF目录),编辑web.xml,添加

log4jConfigLocation classpath:/conf/log4j.properties org.springframework.web.util.Log4jConfigListener

3、普通web工程

没有了spring提供的listener加载log4j.properties,我们要怎么加载这个文件呢?同样,把log4j.properties

放在src/main/resources的conf目录,我们整一个servlet来加载

{ = 1L; publicvoidinit(ServletConfig config)throwsServletException { String prefix =this.getClass().getClassLoader().getResource("/").getPath(); String path = config.getInitParameter("log4j-path"); PropertyConfigurator.configure(prefix + path); } publicvoiddoGet(HttpServletRequest req, HttpServletResponse res)throwsIOException, ServletException {} publicvoiddoPost(HttpServletRequest req, HttpServletResponse res)throwsIOException, ServletException {} publicvoiddestroy() {} }

然后配置servlet随着web工程启动而初始化,编辑web.xml,添加

log4j com.xmyself.log4j.Log4jServlet log4j-path conf/log4j.properties 1

看着是不是和spring mvc的很像,甚至你也想到了,普通java工程没有指定log4j.properties的路径,那说明

log4j的jar包一定有一个默认的路径。另外,建议,log4j的配置放在第一个,因为后续加载其他组件就要开始使用日

B. log4j2 配置简要分析

对于做后端的同学来说,log是分析bug、查找问题不可或缺的工具,好的日志配置将使我们的开发工作如虎添翼。 把视线聚焦到java,常用的日志工具有log4j,log4j2以及logback等,其中log4j2功能较为强大,运行效率也较高,我们就来用一个例子看一看log4j2的配置思路,下面就是这个配置文件:

我们州灶看到,Configuration有2个属性status和monitorInterval,它们分别是log4j2自身组件的日志级别以及重新刷新配置文件的时间,通过配置status可以看到log4j2相关的日志,配置monitorInterval可以通过修改配置文件来改变日志配置。

从上面的log4j2.xml配置文件中,我们可以看到log4j2的配置文件中主要分为2块,一块为appender,描述了如何记录日志,另外一部分是log config,记录了哪种日志对应哪种级别。 而不同的LogConfig之间其实是有继承关系的,子LogConfig会继承parent的属性,而所有LogConfig都继承自Root LogConfig。所以即使只配置了root logger,你一样可以在任何地方通过LoggerFactory.getLogger获取一个logger对象,记录日志。

那么日志之间的继承关系是由什么决定的呢?看看上面的配置文件中root以外的2个logConfig,只有3个配置:日志级别,name以及appender,从直觉上看应当是name最可能决定了LogConfig的继承关系,其实也正是如此:com.foo是com.foo.Bar的父级;java是java.util的父级,是java.util.vector的祖先(注意name区分大小写)。

理解了这一点,我们就能理清log4j2配置的思路:先配置一个root,让所有需要使用日志的logger继承,然后对有特别需要的logger进行特殊的配置,比如我们希望 org.springframework 包只记录error以及warn级别的log,再比如,我们希望能显示mybatis执行的sql的日志,都可以进行个性化的配置。

appender是LogConfig的重要组成部分,一个LogConfig可以使用多个appender,一个appender也可以被多个LogConfig使用,appender多种多样,不同的appender也有不同的属性和配置,难以一一阐述,需要使用时可以直接查看文档来进行个性化配置。不过就filters可以单独拿出来讨论一下。filter有两个重要属性 onMatch 和 onMismatch 。可以有DENY、ACCEPT或NEUTRAL配置,DENY说明不由当前appender处理,ACCEPT说明由当前filter处理,而NEUTRAL说明如果按顺序还有其他filter则由其他filter处理,如果当前filter已经册运扮是最后一个filter,则由当前appender处理。

log4j2的官方文档建议记录程序行为日志异步日志,效率更高。因为异步日志使用的是无锁技术,所以需要引入 Disruptor 。然后可以通过配置异步的appender或Logger来实现异步日志:



动态修改日志级别是一个很实用悄掘的功能,关于如果动态修改日志级别,请参考美团的一篇文章: 日志级别动态调整——小工具解决大问题

以上就是对log4j2的配置的一些总结,更多信息请关注官方文档。

C. java中如何使用log4j将记录的操作日志信息

  1. 主要是通过配置文件

    1.1 Log4j 支持两种配置文件格式,一种是 XML 格式的文件,一种是 Java 特性文件 lg4j.properties (键 = 值)。

  2. Logger 负责处理日志记录的大部分操作。
    其语法为:
    log4j.rootLogger = [ level ] , appenderName, appenderName, …
    2.1 level 是日志记录的优先级,分为 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 ALL
    或者自定义的级别。

    2.2Log4j 建议只使用四个级别,优先级从高到低分别是 ERROR 、 WARN 、 INFO 、 DEBUG

    2.3通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了
    INFO 级别,只有等于及高于这个级别的才进行处理,则应用程序中所有 DEBUG 级别的日志信息将不被打印出来。

    2.4 ALL: 打印所有的日志,
    OFF :关闭所有的日志输出。 appenderName 就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。

  3. 配置日志信息输出目的地 Appender 负责控制日志记录操作的输出。

    3.1log4j.appender.appenderName = fully.qualified.name.of.appender.class
    3.2log4j.appender.appenderName.option1 = value1
    3.3log4j.appender.appenderName.optionN = valueN

  4. Log4j 提供的 appender

    4.1org.apache.log4j.ConsoleAppender (控制台),
    4.2org.apache.log4j.FileAppender (文件),
    4.3org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件),
    4.4org.apache.log4j.RollingFileAppender
    (文件大小到达指定尺寸的时候产生一个新的文件),可通过 log4j.appender.R.MaxFileSize=100KB
    设置文件大小,还可通过 4.5log4j.appender.R.MaxBackupIndex=1 设置为保存一个备份文件。
    4.6org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)

    5.Layout

    5.1org.apache.log4j.HTMLLayout (以 HTML 表格形式布局),
    5.2org.apache.log4j.PatternLayout (可以灵活地指定布局模式),
    5.3org.apache.log4j.SimpleLayout (包含日志信息的级别和信息字符串),
    5.4org.apache.log4j.TTCCLayout (包含日志产生的时间、线程、类别等等信息) 6.格式化日志信息
    Log4J 采用类似 C 语言中的 printf 函数的打印格式格式化日志信息,打印参数如下:
    6.1%m 输出代码中指定的消息
    6.2%p 输出优先级,即 DEBUG , INFO , WARN , ERROR , FATAL
    6.3%r 输出自应用启动到输出该 log 信息耗费的毫秒数
    6.4%c 输出所属的类目,通常就是所在类的全名
    6.5%t 输出产生该日志事件的线程名
    6.6%n 输出一个回车换行符, Windows 平台为 “rn” , Unix 平台为 “n”
    6.7%d 输出日志时间点的日期或时间,默认格式为 ISO8601 ,也可以在其后指定格式,比如: %d{yyyy MMM dd HH:mm:ss,SSS} ,输出类似: 2002 年 10 月 18 日 22 : 10 : 28 , 921
    6.8%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。 7. log4j.propertie 示例文件:

    log4j.rootCategory=INFO, stdout,file

    7.1 定义名为 stdout 的输出端的类型
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n

    7.2定义名为 file 的输出端的类型为每天产生一个日志文件。
    log4j.appender.file =org.apache.log4j.DailyRollingFileAppender
    log4j.appender.file.File=log.txt
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n


    7.3指定 com.neusoft 包下的所有类的等级为 DEBUG 。可以把 com.neusoft 改为自己项目所用的包名。
    log4j.logger.com.neusoft=DEBUG

    7.4如果项目中没有配置 EHCache ,则配置以下两句为 ERROR 。
    log4j.logger.com.opensymphony.oscache=ERROR
    log4j.logger.net.sf.navigator=ERROR

    8struts 配置
    log4j.logger.org.apache.commons=ERROR

    log4j.logger.org.apache.struts=WARN

    8.1 displaytag 配置
    log4j.logger.org.displaytag=ERROR

    8.2 spring 配置
    log4j.logger.org.springframework=DEBUG

    8.3 ibatis 配置
    log4j.logger.com.ibatis.db=WARN
    8.4 hibernate 配置

    log4j.logger.org.hibernate=DEBUG log4j.logger.org.apache.velocity=FATAL
    log4j.logger.com.canoo.webtest=WARN

D. Java log4j 配置文件怎么写,可以输出log.info("")中的内容到指定目录的.log文件

log4j.rootLogger=info, ServerDailyRollingFile, stdout
log4j.appender.ServerDailyRollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ServerDailyRollingFile.DatePattern='.'yyyy-MM-dd
log4j.appender.ServerDailyRollingFile.File=/usr/logs/mylog.log
log4j.appender.ServerDailyRollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.ServerDailyRollingFile.layout.ConversionPattern=%d - %m%n
log4j.appender.ServerDailyRollingFile.Append=true

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %p [%c] %m%n

E. log4j的使用,即java该如何使用日志文件

java使用日志文件log4j的方法:

1、 新建一个Java工程,导入Log4j包,pom文件中对应的配置代码如下:

<!-- log4j support -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

2、resources目录下创建log4j.properties文件

### 设置###
log4j.rootLogger = debug,stdout,D,E

### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=/home/qi/logs/debug.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = /home/qi/logs/debug.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

### 输出ERROR 级别以上的日志到=/home/admin/logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =/home/admin/logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

3、输出日志的例子如下

package com.java.log;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Log4JTest {
private static final Logger logger = LoggerFactory.getLogger(Log4JTest.class);

public static void main(String[] args) {
// 记录debug级别的信息
logger.debug("This is debug message.");
// 记录info级别的信息
logger.info("This is info message.");
// 记录error级别的信息
logger.error("This is error message.");
}
}

4、输出结果
首先,控制台输入如下图所示:

F. java指定日志配置路径命令

单独的Java程序包, 需要通过命令java -jar或java -cp的方式启动;

我们可以在启动命令中加入系统运行时变量, 在log4j加载配置文件之前通过System.getProperties(“path”)读取此变量, 即可实现灵活加载当前路径.

(1) 启动脚本设置:

假设当前项目的目录结构为:

/Projects/KafkaConsumer
丨 bin 项目的启动脚本
丨 conf 项目的配置文件
丨 lib 项目的其他依赖包
丨 bogs 项目的日志输出路径

启动脚本位于bin目录下, 内容示例如下:

# 获取当前脚本所处的目录, 然后进入其上级目录, 最后pwd输出该目录, 最终的结果是/Project/KafkaConsumerbase_dir=$(cd `dirname $0`; cd ..; pwd)# 获取Java运行程序的位置, 并指定主类java_bin=$(which java)main_class=”org.shoufeng.elastic.ConsumerMain”# 通过-cp、扩展CLASSPATH、指定主类的方式启动项目, # 并通过“姿册-D”的方式向此程序的运行时并桐环境中设置当前项目的路径,# 即可在程序中通过System.getProperty(“base.dir”)获取此路径 nohup ${java_bin} -Dbase.dir=${base_dir} -cp ${CLASSPATH}:${base_dir}/conf:${base_dir}/lib/* ${main_class} >> /dev/null &

(2) Java程序读取变量:

实log4j的FileAppender本身支持动态设置文件路径, 如:

log4j.appender.logfile.File=${base.log}/logs/app.log

其中“${base.log}”是绝册坦一个变量, 会被System Property中的base.log的值代替, 代码中的使用方式为:

public static void main(String[] args) { // 获取系统运行时变量中的日志文件的输出路径 // 此变量需要在启动命令中通过-D的方式设置 String baseDir = System.getProperty(“b

G. log4j2 配置相关问题备忘

通常log42j的配置都是通过xml的语法形式,但也支持java配置文件properties的形式来配置

xxx.type代哪咐表的对应的一个节点的开始,节点类型通过type来设置对应
比如rolling.type=RollingRandomAccessFile 将rolling设置为RollingRandomAccessFile类型伏改,之后就可以通过

来设置这个节点的属性,其中rolling名字为自定义的名称
对应的xml配置应该为

https://logging.apache.org/log4j/2.x/manual/appenders.html#
https://logging.apache.org/log4j/2.x/manual/configuration.html

该属性必须和filePattern配合
如filePattern = ${karaf.data}/log/karaf_%d{yyyy-MM-dd-HH-mm} %i.log 代表按分钟划分文件
filePattern = ${karaf.data}/log/karaf %d{yyyy-MM-dd}_%i.log 代表按天划分文件

<DefaultRolloverStrategy max=5>表示保存的文件个数,如果和TimeBasedTriggeringPolicy策略按时间段划分文件配合,则表示该时间段内能保存的最大文件个数

<DefaultRolloverStrategy>节点下的 custom delete action 用李厅纯于自定义文件删除的策略,如设置多少时间后删除对应的文件

这个功能需要 log4j-2.5以后的版本,具体可参考文档
https://logging.apache.org/log4j/2.x/manual/appenders.html#CustomDeleteOnRollover

H. 如何使用java代码配置log4j

1、导入大塌包

I. log4j在java的web项目中怎么用的,如何配置等等。。

在web.xml中添加配置:
<!-- 配置log4j配置文件的路径,可以是xml或 properties(此参数必须配)-->
下面使用了classpath 参数指定log4j.properties文件的位置,这样log4j的配置文件就不用非要放到src的下面:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:config/log4j/log4j.properties</param-value>
</context-param>
使用spring的监听器,当应用启动时来读取log4j的配置文件
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

J. java log4j放在其他目录怎么配置

你意思是不是想把log4j的配置文件放在其他目录,而不是默认目录?这个需要在web.xml里配置一下

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

如果你放在默认目录里,就不需要这一段,加上这一段,就是认为改变了log4jConfigLocation的值,信基尺log4j会在加载的时候去读取这滑高个变量,如果没设锋亮置过,就会取运行时根目录作为默认目录

阅读全文

与log4j配置java相关的资料

热点内容
无线通信的几个密钥算法 浏览:644
王者荣耀app数据修复在哪里 浏览:429
基于单片机饮水机温度控制系统的设计 浏览:455
c中委托被编译后的结构 浏览:152
飞燕app怎么注销账号 浏览:895
cad命令缩小 浏览:154
linux发展史 浏览:629
服务器选用什么CPU比较好 浏览:334
明星怎么宣传安卓 浏览:953
8255芯片编程 浏览:65
java文件bat运行 浏览:747
java常见笔试 浏览:529
360程序员模式 浏览:363
AQS算法的查询树构造 浏览:329
小猪微信营销源码 浏览:12
阿里云服务器能连接打印机吗 浏览:175
命令行参考 浏览:281
怎么初步认识编程 浏览:208
为什么程序员都喜欢谷歌 浏览:891
压缩性骨拆能自愈吗 浏览:277