本文介绍如何在spring-boot中使用log4j2

说明

log4j2本身使用是非常简单的,如果你仅仅是用来记录程序日志信息,花上10分钟看看本文就能达到日常开发所需

如果你寻找其他高级的用法,log4j2官网提供了一切

log4j2核心就是配置文件,本文列举的配置文件,将不同级别的日志输出到不同的文件,并且展示了如何导出html

log4j2配置文件一般放置于resource目录下面,官网提供了xml,json,properties形式的配置方式,本文只用xml

依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
<version>2.0.5.RELEASE</version>
</dependency>

日志记录语句

public class TestController {
private static final Logger logger = LogManager.getLogger(TestController.class); public void test(){
logger.debug("Hello {} !", "World");
logger.info("Info log");
logger.warn("warning!");
logger.error("Error!!!");
logger.fatal("Fatal error!!!!!");
}
}

log4j2配置文件

// -----------------核心配置说明-------------------
Properties 是用来定义共用属性的,也就是在其他配置标签中直接使用
%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} %p %C{3}.%M(%F:%L) %m%n 这些东西,都是log4j2内置的信息展示规则,日常开发,这些够用了
Appenders 白话讲,就是指定不同的输出方式
Console 就是指定控制台输出
RollingFile 就是输出到指定文件
filePattern 指定回滚的文件名,回滚也就是当前的日志文件不满足Policies和DefaultRolloverStrategy的条件时,重新命名,并且生产新的文件
TimeBasedTriggeringPolicy的interval=1表示1天
LevelRangeFilter 就是指定什么等级的日志
Loggers 顾名思义,就是配置具体需要记录日志的入口(类)
// -----------------核心配置说明------------------- <?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30"> <!-- Logging Properties -->
<Properties>
<Property name="LOG_PATTERN">%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} %p %C{3}.%M(%F:%L) %m%n</Property>
<Property name="APP_LOG_ROOT">C:\\Users\\26401\\Desktop\\logs</Property>
</Properties> <Appenders> <!-- Console Appender -->
<Console name="Console" target="SYSTEM_OUT" follow="true">
<PatternLayout pattern="${LOG_PATTERN}"/>
</Console> <RollingFile name="fileLogger" fileName="${APP_LOG_ROOT}/app-info.html"
filePattern="${APP_LOG_ROOT}/app-info-%d{yyyy-MM-dd}.html">
<HTMLLayout charset="UTF-8" title="Howtodoinjava Info Logs" locationInfo="true" />
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
</RollingFile>
<!-- File Appenders on need basis -->
<RollingFile name="frameworkLog" fileName="${APP_LOG_ROOT}/app-framework.log"
filePattern="${APP_LOG_ROOT}/app-framework-%d{yyyy-MM-dd}-%i.log">
<LevelRangeFilter minLevel="ERROR" maxLevel="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<SizeBasedTriggeringPolicy size="19500KB" />
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile> <RollingFile name="debugLog" fileName="${APP_LOG_ROOT}/app-debug.log"
filePattern="${APP_LOG_ROOT}/app-debug-%d{yyyy-MM-dd}-%i.log">
<LevelRangeFilter minLevel="DEBUG" maxLevel="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<SizeBasedTriggeringPolicy size="19500KB" />
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile> <RollingFile name="infoLog" fileName="${APP_LOG_ROOT}/app-info.log"
filePattern="${APP_LOG_ROOT}/app-info-%d{yyyy-MM-dd}-%i.log" >
<LevelRangeFilter minLevel="INFO" maxLevel="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<SizeBasedTriggeringPolicy size="19500KB" />
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile> <RollingFile name="errorLog" fileName="${APP_LOG_ROOT}/app-error.log"
filePattern="${APP_LOG_ROOT}/app-error-%d{yyyy-MM-dd}-%i.log" >
<LevelRangeFilter minLevel="ERROR" maxLevel="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<SizeBasedTriggeringPolicy size="19500KB" />
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile> <RollingFile name="perfLog" fileName="${APP_LOG_ROOT}/app-perf.log"
filePattern="${APP_LOG_ROOT}/app-perf-%d{yyyy-MM-dd}-%i.log" >
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<SizeBasedTriggeringPolicy size="19500KB" />
</Policies>
<DefaultRolloverStrategy max="1"/>
</RollingFile> <RollingFile name="traceLog" fileName="${APP_LOG_ROOT}/app-trace.log"
filePattern="${APP_LOG_ROOT}/app-trace-%d{yyyy-MM-dd}-%i.log" >
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<SizeBasedTriggeringPolicy size="19500KB" />
</Policies>
<DefaultRolloverStrategy max="1"/>
</RollingFile> </Appenders> <Loggers> <Logger name="com.springlearn.learn.controller" additivity="false" level="debug">
<AppenderRef ref="debugLog" />
<AppenderRef ref="infoLog" />
<AppenderRef ref="errorLog" />
<AppenderRef ref="Console" />
<AppenderRef ref="fileLogger"/>
</Logger> <Logger name="com.springlearn.learn" additivity="false" level="info">
<AppenderRef ref="perfLog" />
<AppenderRef ref="Console"/>
</Logger> <Root level="warn">
<AppenderRef ref="Console"/>
</Root> </Loggers> </Configuration>

springboot成神之——log4j2的使用的更多相关文章

  1. springboot成神之——ioc容器(依赖注入)

    springboot成神之--ioc容器(依赖注入) spring的ioc功能 文件目录结构 lang Chinese English GreetingService MyRepository MyC ...

  2. springboot成神之——springboot入门使用

    springboot创建webservice访问mysql(使用maven) 安装 起步 spring常用命令 spring常见注释 springboot入门级使用 配置你的pom.xml文件 配置文 ...

  3. springboot成神之——mybatis和mybatis-generator

    项目结构 依赖 generator配置文件 properties配置 生成文件 使用Example 本文讲解如何在spring-boot中使用mybatis和mybatis-generator自动生成 ...

  4. springboot成神之——swagger文档自动生成工具

    本文讲解如何在spring-boot中使用swagger文档自动生成工具 目录结构 说明 依赖 SwaggerConfig 开启api界面 JSR 303注释信息 Swagger核心注释 User T ...

  5. springboot成神之——mybatis在spring-boot中使用的几种方式

    本文介绍mybatis在spring-boot中使用的几种方式 项目结构 依赖 WebConfig DemoApplication 方式一--@Select User DemoApplication ...

  6. springboot成神之——application.properties所有可用属性

    application.properties所有可用属性 # =================================================================== # ...

  7. springboot成神之——springboot+mybatis+mysql搭建项目简明demo

    springboot+mybatis+mysql搭建项目简明demo 项目所需目录结构 pom.xml文件配置 application.properties文件配置 MyApplication.jav ...

  8. springboot成神之——websocket发送和请求消息

    本文介绍如何使用websocket发送和请求消息 项目目录 依赖 DemoApplication MessageModel WebConfig WebSocketConfig HttpHandshak ...

  9. springboot成神之——发送邮件

    本文介绍如何用spring发送邮件 目录结构 依赖 MailConfig TestController 测试 本文介绍如何用spring发送邮件 目录结构 依赖 <dependency> ...

随机推荐

  1. Codeforces Round #220 (Div. 2)

    链接 毒瘤场..... A题:,真码农题,直接干爆,枚举,注意越界问题,wa37的看这组数据1 10 1 5 2 2,应该是no //#pragma comment(linker, "/st ...

  2. 修改当前启动菜单项的HyperVisorLaunchType

    switch-hyperv.bat @echo off "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\ ...

  3. 三十九 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本概念

    elasticsearch的基本概念 1.集群:一个或者多个节点组织在一起 2.节点:一个节点是集群中的一个服务器,由一个名字来标识,默认是一个随机的漫微角色的名字 3.分片:将索引(相当于数据库)划 ...

  4. 【总结】对异步处理的http接口进行性能测试

    以前对接口做性能测试,接口都是同步处理的,请求之后等待响应结果就知道处理结果了,这样只要看这个接口是否异常,如果无异常无报错记录这个接口的响应时间.TPS等性能指标进行分析就可以了,最近在工作中遇到了 ...

  5. require.js资料

    1.http://www.ruanyifeng.com/blog/2012/11/require_js.html?bsh_bid=230697246 (require.js的用法) 2.http:// ...

  6. Chrome浏览器导出数字证书

    1.F12打开开发者工具,选中"Security"面板-->找到"View certificate",点击 2.选中“详细信息”面板-->复制到文件

  7. Linux CentOS服务启动

    Linux CentOS下如何确认MySQL服务已经启动   Linux CentOS一般做为服务器使用,因此,MySQL服务应该随开机自动启动的.正常情况下,查看开机自动启动的服务使用chkconf ...

  8. 【sparkStreaming】将DStream保存在MySQL

    package SparkDemo import java.sql.{Connection, DriverManager, PreparedStatement} import org.apache.s ...

  9. js & jquery数组介绍

    (转自:http://www.jb51.net/article/30793.htm) 1.数组的创建 var arr=new Array(); 2.查找数组中的元素 for(var i=0;i< ...

  10. webpack4工具链升级排坑记录

    1.webpack4号称是0配置,于是我就只设置了entry.resolve.output.module->rules之类的属性,结果通过webpack-bundle-analyzer跑出来发现 ...