日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。

apache下载log4j:https://logging.apache.org/log4j/2.x/download.html

一、导入log4j的包:

1)下载jar包放到lib中。

2)maven下载依赖:

<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.11.0</version>
</dependency>
<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.11.0</version>
</dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.12</version></dependency>

二、编写配置文件:

1)配置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 级别以上的日志到=G://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = G://logs/log.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}  [ %l] - [ %p ]  %m%n### 输出ERROR 级别以上的日志到=G://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =G://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}  [%l] - [ %p ]  %m%n

1)配置log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="WARN" monitorInterval="30"><!--定义所有的appender --><appenders><!--这个输出控制台的配置 --><console name="Console" target="SYSTEM_OUT"><!--输出日志的格式 --><PatternLayoutpattern="[%d{HH:mm:ss:SSS}] [%p] - %l -%n%m%n" /></console><!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 --><RollingFile name="RollingFileInfo"fileName="G://log2/info.log"filePattern="G://log2/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) --><ThresholdFilter level="info" onMatch="ACCEPT"onMismatch="DENY" /><PatternLayoutpattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" /><Policies><TimeBasedTriggeringPolicy /><SizeBasedTriggeringPolicy size="10MB" /></Policies></RollingFile><RollingFile name="RollingFileWarn"fileName="G://log2/warn.log"filePattern="G://log2/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log"><ThresholdFilter level="warn" onMatch="ACCEPT"onMismatch="DENY" /><PatternLayoutpattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" /><Policies><TimeBasedTriggeringPolicy /><SizeBasedTriggeringPolicy size="10MB" /></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了10 --><DefaultRolloverStrategy max="10" /></RollingFile><RollingFile name="RollingFileError"fileName="G://log2/error.log"filePattern="G://log2/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log"><ThresholdFilter level="error" onMatch="ACCEPT"onMismatch="DENY" /><PatternLayoutpattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" /><Policies><TimeBasedTriggeringPolicy /><SizeBasedTriggeringPolicy size="10MB" /></Policies></RollingFile></appenders><!--然后定义logger,只有定义了logger并引入的appender,appender才会生效 --><loggers><!--过滤掉spring和mybatis的一些无用的DEBUG信息 --><logger name="org.springframework" level="INFO"></logger><logger name="org.mybatis" level="INFO"></logger><root level="all"><appender-ref ref="Console" /><appender-ref ref="RollingFileInfo" /><appender-ref ref="RollingFileWarn" /><appender-ref ref="RollingFileError" /></root></loggers>
</configuration>
 <!--定义所有的appender --><appenders><!--这个输出控制台的配置 --><console name="Console" target="SYSTEM_OUT"><!--输出日志的格式 --><PatternLayoutpattern="[%d{HH:mm:ss:SSS}] [%p] - %l -%n%m%n" /></console><!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 --><RollingFile name="RollingFileInfo"fileName="G://log2/info.log"filePattern="G://log2/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) --><ThresholdFilter level="info" onMatch="ACCEPT"onMismatch="DENY" /><PatternLayoutpattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" /><Policies><TimeBasedTriggeringPolicy /><SizeBasedTriggeringPolicy size="10MB" /></Policies></RollingFile><RollingFile name="RollingFileWarn"fileName="G://log2/warn.log"filePattern="G://log2/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log"><ThresholdFilter level="warn" onMatch="ACCEPT"onMismatch="DENY" /><PatternLayoutpattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" /><Policies><TimeBasedTriggeringPolicy /><SizeBasedTriggeringPolicy size="10MB" /></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了10 --><DefaultRolloverStrategy max="10" /></RollingFile><RollingFile name="RollingFileError"fileName="G://log2/error.log"filePattern="G://log2/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log"><ThresholdFilter level="error" onMatch="ACCEPT"onMismatch="DENY" /><PatternLayoutpattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" /><Policies><TimeBasedTriggeringPolicy /><SizeBasedTriggeringPolicy size="10MB" /></Policies></RollingFile></appenders><!--然后定义logger,只有定义了logger并引入的appender,appender才会生效 --><loggers><!--过滤掉spring和mybatis的一些无用的DEBUG信息 --><logger name="org.springframework" level="INFO"></logger><logger name="org.mybatis" level="INFO"></logger><root level="all"><appender-ref ref="Console" /><appender-ref ref="RollingFileInfo" /><appender-ref ref="RollingFileWarn" /><appender-ref ref="RollingFileError" /></root></loggers>
</configuration>

三、编写代码:

1)Log4j.java  (注意:导入Logger的jar包和Logger的获取方式)

package com.lris.test;import org.apache.log4j.Logger;
public class Log4j {private static Logger logger = Logger.getLogger(Test.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!");// 记录warn级别的信息logger.warn("This is warn message!"); }  }

2)Log4j2.java  (注意:导入Logger的jar包和Logger的获取方式)

package com.lris.test;import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;public class Log4j2 {private static Logger logger2 = LogManager.getLogger(Test.class);public static void main(String[] args) {  // 记录debug级别的信息logger2.debug("This is debug message!");// 记录info级别的信息logger2.info("This is info message!");// 记录error级别的信息logger2.error("This is error message!"); // 记录warn级别的信息logger2.warn("This is warn message!"); }  }

apche的log4j.properties和log4j2.xml的配置和使用相关推荐

  1. linux log4j2.xml,动态配置log4j2.xml日志输出文件的位置

    目标:根据启动jar时传进main()的参数动态修改日志位置 一.修改启动项 MainMapLookup.setMainArguments(args); 注:不要在lookup设置之前初始化log(如 ...

  2. log4j升级到log4j2 spring

    目录 基础知识 日志系统对应的jar包和推荐依赖 pom.xml 代码可能要修改的地方 log4j2的配置文件 个人问题杂记 去掉父工程的依赖 log4j2异步日志包缺失时报错 mybatis-spr ...

  3. log4j2入门(四) log4j2.xml配置文件详细实例

    log4j2相对于log4j 1.x有了脱胎换骨的变化,其官网宣称的优势有多线程下10几倍于log4j 1.x和logback的高吞吐量.可配置的审计型日志.基于插件架构的各种灵活配置等.如果已经掌握 ...

  4. SpringBoot—整合log4j2入门和log4j2.xml配置详解

    关注微信公众号:CodingTechWork,一起学习进步. 引言   对于一个线上程序或者服务而言,重要的是要有日志输出,这样才能方便运维.而日志的输出需要有一定的规划,如日志命名.日志大小,日志分 ...

  5. log4j2.xml参数详解

    log4j2.0以后我们通常在log4j2.xml中配置相关参数,在配置的时候我们需要理解这些参数的具体含义,下面列出了这些参数的解释. 1.Logger 完成日志信息的处理 <logger n ...

  6. SpringBoot+log4j2.xml读取application.yml属性值

    参考文章:SpringBoot+log4j2.xml使用application.yml属性值 1.创建Listener package com.cloud.config;import org.apac ...

  7. log4j之log4j2.xml使用

    依赖jar包 log4j-api-2.6.2.jar log4j-core-2.6.2.jar log4j-slf4j-impl-2.6.2.jar slf4j-api-1.7.12.jar 在res ...

  8. log4j.properties中的这句话“log4j.logger.org.hibernate.SQL=DEBUG ”该怎么写在log4j.xml里面呢?...

    http://www.cnblogs.com/gredswsh/p/log4j_xml_properties.html 请问:log4j.properties中的这句话"log4j.logg ...

  9. 02_MyBatis项目结构,所需jar包,ehcache.xml配置,log4j.properties,sqlMapConfig.xml配置,SqlMapGenerator.xml配置

     项目结构(所需jar包,配置文件) sqlMapConfig.xml的配置内容如下: <?xmlversion="1.0"encoding="UTF-8&qu ...

最新文章

  1. 500多页的机器学习入门笔记,下载超5万次,背后都有什么故事?
  2. Linux操作系统安装LAMP环境
  3. Java实体类对象修改日志记录
  4. 小米网抢购系统开发实践和我的个人观察
  5. IO流 练习 -- 文件夹的删除
  6. SIGIR2021推荐系统论文集锦(附论文原文及代码链接)
  7. 四、RabbitMQ消息消费时的权衡
  8. 子页面应用母版页图片无法显示
  9. staruml 为类的属性指定数据类型_关于python的数据类型
  10. windows7桌面计算机作用,win7系统虚拟桌面功能的详细教程
  11. 修改服务器的返回数据,使用charles 修改服务器返回数据
  12. 数据增强方式mosaic(基于yolo4)代码实现python
  13. 以结算价交易TAS和以市价交易TAM
  14. axure原件 总是丢失_【总结整理】AXURE原件
  15. storyboard 苹果启动图_苹果App Store审核要求使用Storyboard启动界面的解决方案
  16. DDDM: A Brain-Inspired Framework for Robust Classification
  17. Shell 变量嵌套
  18. C语言-大端存储和小端存储
  19. 2023,开启「线控转向」元年
  20. SpringBoot+Vue项目在线视频教育平台

热门文章

  1. HTTP 503 错误 – 服务不可用 (Service unavailable)
  2. 冷门但好用的 Python 库推荐一波
  3. Pwnable之passcode
  4. 交叉碳市场和 Web3 以实现再生变革
  5. java版Spring Cloud+短视频带货 b2b2c多商户分布式微服务
  6. Shiro session过期跳转到登录页面问题
  7. leet code: Two Sum
  8. 如何在ChemDraw中输入℃温度符号
  9. Android切换APP前后台展示开屏广告
  10. 微信小程序和uni-app面试高频知识点