In log4j tutorial, we saw how to use log4j xml based configuration. But log4j.xml is verbose, so log4j framework provide option to read configuration from properties file too.

在log4j教程中 ,我们了解了如何使用基于log4j xml的配置。 但是log4j.xml是冗长的,因此log4j框架也提供了从属性文件读取配置的选项。

Since properties file don’t have any defined schema to validate, we have to be more careful with it. Today we will see how XML configurations can be converted to properties based configuration.

由于属性文件没有要验证的已定义架构,因此我们必须格外小心。 今天,我们将看到如何将XML配置转换为基于属性的配置。

根记录器 (Root Logger)

Root logger is used when there is no match with a logger. It’s defined like below in XML.

与记录器不匹配时使用根记录器。 它的定义类似于下面的XML。

<root><priority value="DEBUG" /><appender-ref ref="file" /><appender-ref ref="console" />
</root>

It can be defined in properties file as below.

可以在属性文件中定义如下。

log4j.rootLogger=DEBUG, file, console

The first value in comma separated list is the root logging level value. All other values are appenders.

逗号分隔列表中的第一个值是根日志记录级别值。 所有其他值都是追加器。

Log4j Appenders (Log4j Appenders)

We can have multiple appenders in log4j. Below are two appenders, one for console logging and another to file.

我们在log4j中可以有多个追加程序。 以下是两个附加程序,一个用于控制台日志记录,另一个用于文件记录。

<!-- console appender -->
<appender name="console" class="org.apache.log4j.ConsoleAppender"><param name="Target" value="System.out" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%-5p %c{1} - %m%n" /></layout>
</appender><!-- rolling file appender -->
<appender name="file" class="org.apache.log4j.RollingFileAppender"><param name="File" value="logs/main.log" /><param name="Append" value="true" /><param name="ImmediateFlush" value="true" /><param name="MaxFileSize" value="10MB" /><param name="MaxBackupIndex" value="5" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%d %d{Z} [%t] %-5p (%F:%L) - %m%n" /></layout>
</appender>

In log4j.properties file, they will be defined as below.

在log4j.properties文件中,它们将定义如下。

#Define console appender
log4j.appender.console=org.apache.log4j.ConsoleAppender
logrj.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-5p %c{1} - %m%n#Define rolling file appender
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=logs/main.log
log4j.appender.file.Append=true
log4j.appender.file.ImmediateFlush=true
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=5
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %d{Z} [%t] %-5p (%F:%L) - %m%n

So the format for log4j properties file appender is log4j.appender.{appender_name}.{appender_config}. Notice that the appenders configurations such as MaxFileSize, MaxBackupIndex are same as in XML configuration file.

因此,log4j属性文件追加器的格式为log4j.appender.{appender_name}.{appender_config} 。 请注意,诸如MaxFileSizeMaxBackupIndex类的附加程序配置与XML配置文件中的相同。

Log4j记录器 (Log4j loggers)

Just like appenders, we can have multiple loggers. For example of xml based configuration;

就像追加程序一样,我们可以有多个记录器。 例如基于xml的配置;

<logger name="com.journaldev.log4j" additivity="false"><level value="WARN" /><appender-ref ref="file" /><appender-ref ref="console" />
</logger><logger name="com.journaldev.log4j.logic" additivity="false"><level value="DEBUG" /><appender-ref ref="file" />
</logger>

They will be defined in properties file as log4j.logger.{logger_name}. The values contain logging level and list of appenders to use.

它们将在属性文件中定义为log4j.logger.{logger_name} 。 这些值包含日志记录级别和要使用的附加程序列表。

#Define loggers
log4j.logger.com.journaldev.log4j=WARN, file, console
log4j.logger.com.journaldev.log4j.logic=DEBUG, file, console

Log4j记录器可加性 (Log4j logger additivity)

Additivity usage is shown in above logger xml configuration, it’s the attribute of logger element. Below is the way to use it in log4j properties file configuration as log4j.additivity.{logger_name}.

上面的logger xml配置中显示了可加性用法,它是logger元素的属性。 以下是在log4j属性文件配置中以log4j.additivity.{logger_name}使用它的方法。

#setting additivity
log4j.additivity.com.journaldev.log4j=false
log4j.additivity.com.journaldev.log4j.logic=false

Based on above, below is my final log4j.properties file.

基于上面,下面是我的最终log4j.properties文件。

#Define root logger options
log4j.rootLogger=DEBUG, file, console#Define console appender
log4j.appender.console=org.apache.log4j.ConsoleAppender
logrj.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-5p %c{1} - %m%n#Define rolling file appender
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=logs/main.log
log4j.appender.file.Append=true
log4j.appender.file.ImmediateFlush=true
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=5
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %d{Z} [%t] %-5p (%F:%L) - %m%n#Define loggers
log4j.logger.com.journaldev.log4j=WARN, file, console
log4j.logger.com.journaldev.log4j.logic=DEBUG, file, console#setting additivity
log4j.additivity.com.journaldev.log4j=false
log4j.additivity.com.journaldev.log4j.logic=false

Log4j PropertyConfigurator (Log4j PropertyConfigurator)

PropertyConfigurator is used to configure log4j settings. It’s optional if the file name is log4j.properties and it’s in the project classpath. We have to configure it before using the logger.

PropertyConfigurator用于配置log4j设置。 如果文件名是log4j.properties并且在项目类路径中,则它是可选的。 在使用记录器之前,我们必须对其进行配置。

Here is a simple program showing how to configure and use log4j logging.

这是一个简单的程序,显示了如何配置和使用log4j日志记录。

package com.journaldev.log4j.main;import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;import com.journaldev.log4j.logic.MathUtils;public class Log4jExample {static{init();}private final static Logger logger = Logger.getLogger(Log4jExample.class);public static void main(String[] args) {logger.debug("My Debug Log");logger.info("My Info Log");logger.warn("My Warn Log");logger.error("My error log");logger.fatal("My fatal log");}/*** method to init log4j configurations*/private static void init() {PropertyConfigurator.configure("log4j.properties");}}

When it’s executed, you will get below in console log.

执行后,您将在控制台日志中找到以下内容。

WARN  Log4jExample - My Warn Log
ERROR Log4jExample - My error log
FATAL Log4jExample - My fatal log

At the same time, you will see logs getting generated in main.log file as below.

同时,您将在main.log文件中看到如下生成的日志。

2016-05-14 00:34:11,994 +0530 [main] WARN  (Log4jExample.java:20) - My Warn Log
2016-05-14 00:34:11,995 +0530 [main] ERROR (Log4jExample.java:21) - My error log
2016-05-14 00:34:11,995 +0530 [main] FATAL (Log4jExample.java:22) - My fatal log

Notice that debug and info logger are not getting printed because the minimum logging level is set as WARN. That’s all for log4j properties file example usage. Happy Logging!

请注意,由于最低记录级别设置为WARN,因此未打印调试和信息记录器。 这就是log4j属性文件示例用法的全部内容。 祝您伐木愉快!

翻译自: https://www.journaldev.com/10698/log4j-properties-file-example

log4j.properties文件示例相关推荐

  1. log4j.properties文件中的log4j.rootLogger重要性

    log4j.rootLogger is at the top of all the logger hierarchy, just like we have Object in java classes ...

  2. 如何在log4j.properties文件中使用相对路径

    来源:http://hi.baidu.com/eredlab/blog/item/f6c1a5efe44a1af9cf1b3e17.html 写在最前面: log4j是一个应用非常广泛的Java日志组 ...

  3. 如何读取jar包外的properties文件和log4j.properties

    2019独角兽企业重金招聘Python工程师标准>>> 时间有限,不做排版和具体讲述问题产生的过程,下面是我的解决方案,已证实有效,其中Log4jP = "log4j.pr ...

  4. log4j日志文件 log4j.xml log4j.properties配置

    1,导入log4j  jar包; 2,配置log4j.xml或log4j.properties文件; ------------------------------------------------- ...

  5. log4j.properties的配置与详细说明

    1. 新建测试项目testLog,并引入jar包. 2. 在src目录下新建log4j.properties文件,然后开始配置文件. log4j.rootLogger=INFO,stdout,debu ...

  6. 如何读取jar包外的properties和log4j.properties等配置文件

    一般在项目中使用properties配置文件的时候都将相关的properties文件放在src目录下,在将该app打包生成jar后,相应的properties配置文件生... 一般在项目中使用prop ...

  7. 因缺失log4j.properties 配置文件导致flume无法正常启动。

    因缺失log4j.properties 配置文件导致flume无法正常启动 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.报错:log4j:WARN No appenders ...

  8. java log4j mysql_java – 配置log4j属性文件以存储在mysql数据库中

    如果你使用的是mysql.创建一个log4j.properties文件.这对我有用. 把它放在你的应用程序的根文件夹中.即所有包裹的根.我也有一个包含字段id,日期,用户,消息和类的表日志. log4 ...

  9. log4j.properties log4j.xml 路径问题

    自动加载配置文件: (1)如果采用log4j输出日志,要对log4j加载配置文件的过程有所了解.log4j启动时,默认会寻找source folder下的log4j.xml配置文件,若没有,会寻找lo ...

最新文章

  1. PHP下载/采集远程图片到本地
  2. slate-angular 正式开源
  3. mysql 主从,主主,主主复制时的主键冲突解决
  4. Ubuntu 12.10 安装 jdk-7u10-linux-x64.tar.gz
  5. linux系统获取用户信息失败怎么办,异常详细信息: System.Data.SqlClient.SqlException: 用户 'NT AUTHORITY\IUSR' 登录失败解决办法...
  6. python程序员工作怎样-怎样才能成为一名Python程序员
  7. Dos批处理中符号作用大全
  8. LeetCode MySQL 534. 游戏玩法分析 III
  9. 【Java】计算8+88+888+8888+....前12项的和
  10. 计算N个点和M个点之间的距离
  11. 如果要在mFC客户区添加控件怎么办
  12. SVN安装后bin中没有svn.exe,TortoiseSVN安装后bin目录中没有svn.exe;
  13. 编译Notepad2语法高亮记事本源码心得
  14. T100服务端接口开发步骤
  15. java 泛型 转化对象_java通过反射,泛型将定义的对象与对象之间互转
  16. 计算机操作系统——程序执行的流程
  17. VEH +硬件断点 HOOK
  18. SAS更新SID问题
  19. 教你来使用雪碧图(CSS sprite)
  20. 筋斗云接口编程 / 常用操作(二)

热门文章

  1. PHP运算符 - 对象的方法或者属性, =数组的元素值
  2. 【原创】定制ROM时自定义默认主题
  3. [转载] Numpy数组对象ndarray
  4. [转载] (三)Python关键字和内置函数
  5. 数组的顺序存储和实现
  6. BZOJ 1090: [SCOI2003]字符串折叠
  7. 使用async 和 await方法来
  8. 类型与通用语言运行时:System.Object
  9. EasyUI文档学习心得
  10. 学习simple.data之基础篇