log4j日志pattern配置

log4j⽇志pattern配置

c category的名称,可使⽤{n}限制输出的精度。例如:logger名为"a.b.c",%c{2}将输出"b.c"。

C 产⽣log事件的java完全限定类名。可使⽤{n}限制输出的精度。例如:“org.apache.xyz.SomeClass”,%C{2}将输出“SomeClass”。

d 时间和⽇期的输出格式,例如:%d{yyyy MM dd HH:mm:ss,SS},可不带后⾯的⽇期格式字符。

F 产⽣log事件的java源⽂件名,带“.java”后缀及包名称。

l log发⽣位置的详细描述,包括⽅法名、⽂件名及⾏号。

L log发⽣在源⽂件中的位置。

m log事件的消息内容。

M log发⽣时所在的⽅法名称。

n 根据所运⾏的平台输出相应的⾏分隔字符。

p log事件的级别。

r ⾃程序运⾏⾄log事件产⽣所经过的时间。

t 产⽣log的线程名称。

例⼦:%d{HH:mm:ss.SSS} [%t] %-5level %logger{80} - %msg%n%d{yyyy-MM-dd HH:mm:ss,SSS} %t %-4r %p %F[%L]: %m%n

2018-07-07 22:36:23,646 main 926 DEBUG XmlHandler.java[22]: 开始解析xml⽂档

合集下载

log4j日志脱敏处理+javaproperties文件加载

log4j日志脱敏处理+javaproperties文件加载

log4j⽇志脱敏处理+javaproperties⽂件加载

Java 加载Properties 配置⽂件:

ResourceBundle bundle = ResourceBundle.getBundle("log4j_filter"); // 不要写扩展名 .properties

LOG_FILTER_SWITH = bundle.getString("log4j.filter.swith");

LOG_FILTER_KEYS = bundle.getString("log4j.filter.keys");

// 直接在本类中使⽤main调⽤时⽤ Properties.class.getResourceAsStream("/log4j_filter.properties");

//Properties p = new Properties();

//p.load(in);

//LOG_FILTER_SWITH = p.getProperty("log4j.filter.swith");

//LOG_FILTER_KEYS = p.getProperty("log4j.filter.keys");

⽇志脱敏实现: 因为只修改了⼀个log4j类的调⽤,故⽇志必须是

private final static Logger logger = LogManager.getLogger(SeqConfControl.class);

1 , 配置⽂件 log4j_filter.properties (⼀个参数是脱敏⽇志开关, ⼀个参数是要脱敏的关键字)

2,⾃定义类 : org.apache.logging.log4j.spi.Log4jFilter.java 是解析处理⽇志字符串中的敏感信息;

log4j原⽣类: org.apache.logging.log4j.spi.AbstractLogger.java 负责调⽤⾃⼰写的类的⽅法.

Log4j日志分类和过滤敏感字段的实例

Log4j日志分类和过滤敏感字段的实例

Log4j⽇志分类和过滤敏感字段的实例

项⽬上线时,需要对项⽬做安全检查,其中有两项是对输出⽇志进⾏分类和过滤掉⽇志中敏感字段。

项⽬使⽤Log4j⽇志系统,下⾯简单介绍下这两项要求的实现⽅式。

对⽇志进⾏分类,要求调⽤其他服务的API⽇志按照格式单独输出到⼀个⽂件。

⽅式: 除根Logger外,再额外增加⼀个apiLogger,如下,

注: (1) additivity设为false,则root中的配置就失效了。即使⽤root配置的⽇志不会在apiLogger的⽂件中出现;

(2) 每种logger指定两个appender,分别是在debug console和Linux 服务器⽇志⽂件中显⽰。

根⽇志的ConsoleAppender和DailyRollingFileAppender的配置如下:

apiLogger的apiConsoleAppender和apiMsgOutGoingAppender设置如下:

注:(1) Log4j系统Appender组件负责⽇志的输出配置,包括输出⽬录,最⼤输出⼤⼩,输出⽂件数等;Layout组件负责⽇志输出的格式。

(2)JAVA代码在使⽤⽇志系统时,默认⽤根⽇志的配置输出,若想使⽤apiLogger,使⽤:

private static Logger log = Logger.getLogger("log4j.logger.apiLogger");

(3)⽇志layout中传⼊⾃定义参数,使⽤MDC类:

public static void configAndPrintAPILogger(Logger logger, int statusCode, String method, String url,

long responseTime,

关于记录log日志的几种方法

关于记录log日志的几种方法

关于记录log⽇志的⼏种⽅法

最近在记录⽇志的时候总结了⼏种⽅式:

1.使⽤log4j2记录

2.使⽤log4j记录

3.使⽤logback配置,记录前使⽤

private final Logger logger = LoggerFactory.getLogger(当前类名.class)

⼀.使⽤log4j2

1.在pom.xml⽂件中引⼊依赖

2.增加log4j2的配置⽂件(log4j2.xml)

3.更新⽂件后,只需要 在要写⽇志的类上增加注解 @Log4j2,会要求 import lombok.extern.log4j.Log4j2;

1 @Log4j2

2 @RestController

3 @RequestMapping("/project")

4 @Api(value = "项⽬管理 controller", tags = {"项⽬管理"})

5 public class ProjectController {

6 @Autowired

7 private ProjectService projectService;

8

9 /**

10 * 查询项⽬信息

11 *

12 * @param project

13 * @return

14 */

15

16 @GetMapping("/findProject")

17 public List findProject(Project project) {

18 ("ProjectController findProject 请求参数: {}", JSON.toJSONString(project));

19 List projectList = projectService.findProject(project);

DailyRollingFileAppender的使用

DailyRollingFileAppender的使用

1 / 7

DailyRollingFileAppender的使用

DailyRollingFileAppender是日志记录软件包Log4J中的一个Appender,它能够按一定的频度滚动日志记录文件。

如果您不熟悉Log4J,那我们建议您阅读一下使用Log4j进行日志记录。

我们可以按下面的方式配置DailyRollingFileAppender:

log4j.rootCategory=INFO,file

log4j.appender.file=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.file.DatePattern='.'yyyy-MM-dd

log4j.appender.file.File=run.log

log4j.appender.file.Append=true

log4j.appender.file.Threshold=INFO

yout=org.apache.log4j.PatternLayout

yout.ConversionPattern=%c %x - %m%n

在DailyRollingFileAppender中可以指定monthly(每月)、weekly(每周)、daily(每天)、half-daily(每半天)、hourly(每小时)和minutely(每分钟)六个频度,这是通过为DatePattern选项赋予不同的值来完成的。DatePattern选项的有效值为:

'.'yyyy-MM,对应monthly(每月)

2 / 7

'.'yyyy-ww,对应weekly(每周)

'.'yyyy-MM-dd,对应daily(每天)

'.'yyyy-MM-dd-a,对应half-daily(每半天)

'.'yyyy-MM-dd-HH,对应hourly(每小时)

'.'yyyy-MM-dd-HH-mm,对应minutely(每分钟)

mybatis log free 原理

mybatis log free 原理

mybatis log free 原理

MyBatis是一个开源的持久层框架,广泛应用于Java语言中的数据库访问操作。在MyBatis中,日志是一种非常重要的功能,可以帮助开发人员跟踪和调试代码,了解SQL语句的执行情况以及性能优化的潜在问题。本文将介绍MyBatis中日志的原理和实现方式。

一、MyBatis日志的作用

在开发过程中,我们经常需要对数据库的操作进行调试和优化。MyBatis的日志功能可以记录每一条SQL语句的执行情况,包括SQL语句本身、参数值、返回结果等信息。通过查看日志,我们可以快速定位代码中的问题,如SQL语句写错、参数传递错误等,并且可以对SQL语句的执行性能进行分析和优化。

二、MyBatis日志的配置

MyBatis支持多种日志框架,包括Log4j、Log4j2、SLF4J、Commons Logging等。我们可以根据项目的需求选择合适的日志框架,并在配置文件中进行相应的配置。以下是一个Log4j2的配置示例:

```xml

```

在以上配置中,我们将日志输出到控制台,并设置了输出格式。通过这样的配置,我们就可以在控制台上看到MyBatis的日志信息了。

三、MyBatis日志的实现原理

MyBatis的日志功能是通过Logger接口来实现的,该接口定义了一些打印日志的方法。MyBatis提供了多种Logger的实现类,如Log4jLogger、Log4j2Logger、Slf4jLogger等,可以根据项目的需求选择合适的实现类。默认情况下,MyBatis使用的是Slf4jLogger。

MyBatis的日志实现原理比较简单,它通过在Mapper接口上添加@Log注解的方式来实现。当我们在Mapper接口上添加@Log注解后,MyBatis会自动为该接口生成一个代理类,在代理类中添加了打印日志的代码。当我们调用Mapper接口的方法时,实际上是调用了代理类的方法,从而实现了打印日志的功能。

log4j2使用properties文件进行配置

log4j2使用properties文件进行配置

log4j2使⽤properties⽂件进⾏配置

⽹上不少⽂章给的都是⽤xml进⾏配置,也会提到⽆法使⽤properties⽂件对log4j进⾏配置,但那应该只是在他们写⽂章的时候才是如此,最新的

2.8.2版本经过我试验后是可以做到的当然该⽂件最好放在特定的⽬录中才⾏,官⽅⽂档也提到了

1.Log4j will inspect the "log4j.configurationFile" system property and, if set, will attempt to load the configuration using the ConfigurationFactory that matches the file extension.

2.If no system property is set the YAML ConfigurationFactory will look for log4j2-test.yaml or log4j2-test.yml in the classpath.

3.If no such file is found the JSON ConfigurationFactory will look for log4j2-test.json or log4j2-test.jsn in the classpath.

4.If no such file is found the XML ConfigurationFactory will look for log4j2-test.xml in the classpath.

5.If a test file cannot be located the YAML ConfigurationFactory will look for log4j2.yaml or log4j2.yml on the classpath.

6.If a YAML file cannot be located the JSON ConfigurationFactory will look for log4j2.json or log4j2.jsn on the classpath.

timebasedrollingpolicy参数

timebasedrollingpolicy参数

在Java日志框架中,Log4j是一个非常流行的日志框架。它允许程序员将不同级别的日志记录到不同的文件中,并轻松地对其进行配置。其中,timebasedrollingpolicy参数则是Log4j中一个非常重要的参数,用于设置日志文件的滚动策略。

Step 1:了解Log4j的基本概念

在使用“timebasedrollingpolicy参数”之前,需要先了解Log4j中的几个基本概念。其中,Logger是Log4j中最重要的类之一,用于记录不同级别的日志。除了Logger之外,还有Appender(用于将日志输出到不同的目标,例如控制台、文件等)、Layout(用于确定日志的格式)等。

Step 2:了解日志滚动的概念

在Log4j中,日志文件的滚动是指当日志达到一定大小或时间后,自动创建一个新的日志文件,以避免日志文件过大或日志被覆盖的情况。这就是所谓的“Rolling”。

Step 3:了解timebasedrollingpolicy参数

在Log4j中,可以通过设置RollingFileAppender的相应参数来实现日志滚动。其中,timebasedrollingpolicy参数用于根据时间滚动日志文件。它支持以下几个子属性:

- FileNamePattern:用于指定日志文件的命名格式。例如,如果设置为“myapp.%d{yyyy-MM-dd}.log”,则会创建一个以日期命名的日志文件。

- ActiveFileName:用于指定当前活动的日志文件的文件名。

- rollover:在切换到一个新的日志文件之前,要记录多少个日志事件。

- TimeZone:时区设置,可以指定特定的时区来滚动日志文件。

Step 4:应用timebasedrollingpolicy参数

使用“timebasedrollingpolicy参数”来实现日志滚动非常简单。首先,需要在Log4j配置文件中定义RollingFileAppender,并设置对应的参数。例如:

log4jdbc记录全部SQL日志

log4jdbc记录全部SQL⽇志

log4jdbc 是⼯作在jdbc层的⼀个⽇志框架,能够记录SQL及数据库连接执⾏信息。

⼀般的SQL⽇志会把具体的参数值⽤?代替,有时候很不⽅便,log4jdbc则会记录数据库执⾏的完整SQL字符串,在数据库应⽤开发调试阶

段⾮常有⽤。

log4jdbc具有以下特性:

•⽀持JDBC3和JDBC4。

•⽀持现有⼤部分JDBC驱动。

•易于配置(在⼤部分情况下,只需要改变驱动类名并在jdbc url前加上”jdbc:log4“,设置好⽇志输出级别)。

•能够⾃动把SQL变量值加到SQL输出⽇志中,改进易读性和⽅便调试。

•能够快速标识出应⽤程序中执⾏⽐较慢的SQL语句。

•能够⽣成SQL连接数信息帮助识别连接池/线程问题。

只需操作⼀下三步即可显⽰全部SQL⽇志1.导⼊相关JAR包

选择⽇志包,版本⾃⼰选择log4j-1.2.15.jar (下载地址:/dist/logging/log4j/)

slf4j-api-1.6.1.jar(下载地址:/dist/)(⽐如下载slf4j-1.6.1.zip)

选择slf4j-log4j包的版本是根据上⾯选择的log4j和slf4j包的版本slf4j-log4j12-1.6.1.jar 此jar包在slf4j项⽬包下(下载slf4j项⽬包解压,⽐如slf4j-1.6.1.zip)

根据⾃⼰的JDK版本选择log4jdbc Jar包log4jdbc4-1.2.jar(log4jdbc 1.2 jar for JDBC 4 (JDK 1.6 and 1.7))或者log4jdbc3-1.2beta2.jar (for JDBC 3 (JDK 1.4 and 1.5))

此jar包下载地址/p/log4jdbc/downloads/list

slf4j用法

slf4j用法

SLF4J(Simple Logging Facade for Java)是一种日志框架,旨在统一不同日志框架的接口,并为开发人员提供灵活、高度可定制化的日志记录功能。SLF4J支持Log4j、JDK日志、Logback等多种日志实现。

下面将介绍如何使用SLF4J:

#### 1.添加依赖

在Maven项目中,需要在pom.xml中添加以下依赖:

```xml

org.slf4j

slf4j-api

1.7.25

org.slf4j

slf4j-log4j12

1.7.25

```

其中,slf4j-api是必需的,可以根据需要选择不同的实现来记录日志。

#### 2.编写代码

在Java类中,首先需要获取Logger对象:

```java

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class Demo { private static final Logger logger =

LoggerFactory.getLogger(Demo.class);

// ...

}

```

在各个方法中,可以使用以下方法输出日志:

```java

("Logging message...");

logger.error("Logging message with exception", ex);

logger.debug("Logging debug message...");

logger.warn("Logging warn message...");

```

#### 3.配置日志文件

SLF4J本身并不提供日志记录功能,因此需要结合其他日志框架使用。在此以Log4j为例:

在项目中添加log4j.properties文件,并进行相应配置:

sqlsessiontemplate 日志 -回复

sqlsessiontemplate 日志 -回复

"log4j:WARN No appenders could be found for logger

(org.springframework.jdbc.core.StatementCreatorUtils).

log4j:WARN Please initialize the log4j system properly.

log4j:WARN See for more info."

这是我在使用sqlsessiontemplate时遇到的日志警告。这个警告主要表示没有找到合适的日志记录器。在本文中,我将一步一步回答这个问题,帮助解决这个日志警告。

第一步是确定log4j配置文件是否正确地设置。可以通过检查出现日志警告的类路径来确定它们在哪个位置寻找log4j配置文件。如果在类路径的根目录下没有找到配置文件,则可以考虑将log4j配置文件放到src/main/resources目录下。确保将log4j.properties或log4j.xml正确命名,并将其放到正确的位置。

第二步是检查log4j配置文件的内容。可能会发生配置文件中出现错误或不完整的情况。确保配置文件正确地定义了日志记录器,包括指定了适当的级别和输出目标。在这种情况下,我们需要配置一个适当的附加器,以确保日志事件能够正确地记录和输出。可以在log4j.properties或log4j.xml文件中添加以下配置:

log4j.appender.console=org.apache.log4j.ConsoleAppender

yout=org.apache.log4j.PatternLayout

yout.ConversionPattern=-4r [t] -5p c x -

mn

log4j.rootLogger=DEBUG, console

这个配置将添加一个名为console的附加器,并将其附加到rootLogger,以确保所有日志事件都被正确地记录和输出到控制台。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档