>  기사  >  Java  >  log4j를 사용하여 Java에서 로그를 기록하는 방법

log4j를 사용하여 Java에서 로그를 기록하는 방법

高洛峰
高洛峰원래의
2017-01-18 11:54:231850검색

1. 머리말

log4j는 Java로 작성된 안정적이고 빠르며 유연한 로깅 프레임워크(API)로 Apache 소프트웨어 라이센스에 따라 출시됩니다. Log4j는 C, C++, C#, Perl, Python 및 Ruby와 같은 언어로 이식되었습니다.

Log4j는 구성 가능성이 높으며 런타임 시 외부 파일을 통해 구성할 수 있습니다. 이는 로깅의 우선순위를 지정하고 로깅 정보를 데이터베이스, 파일, 콘솔, UNIX 시스템 로그 등과 같은 여러 대상으로 전달하는 메커니즘을 제공합니다.

Log4j에는 세 가지 주요 구성 요소가 있습니다.

로거: 로깅 정보 캡처를 담당합니다.

어펜더: 다양한 기본 대상에 로그 정보를 게시하는 역할을 담당합니다.

레이아웃: 로그 정보의 형식을 다양한 스타일로 지정합니다.

참고: 이 기사는 log4j 2.X 이상을 기반으로 합니다.

2. 설치

log4j-core-xx.jar

log4j-api-xx.jar

log4j-web -xx.jar(웹 프로젝트에 필요한 참조)

3. 구성

일부 로그 클래스를 준비하고 다음 참조를 추가합니다.

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
static Logger logger = LogManager.getLogger(Test.class.getName());

구성 파일 위치는 다음과 같습니다. src 루트 디렉터리에 구성 파일이 없어도 오류가 보고되지 않으며 기본적으로 콘솔 형식으로 출력됩니다.

log4j2 구성 파일은 log4(버전 1.)와 매우 다릅니다:

<?xml version="1.0" encoding="UTF-8"?>
 
<configuration status="error">
 <!--先定义所有的appender-->
 <appenders>
  <!--这个输出控制台的配置-->
  <Console name="Console" target="SYSTEM_OUT">
   <!--这个是输出日志的格式-->
   <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
  </Console>
  <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,适合临时测试用-->
  <File name="Error" fileName="${web:rootDir}/logs/error.log" append="false">
   <!--文件只记录level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
   <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
   <PatternLayout charset="UTF-8" pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
  </File>
 
  <!--这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
  <RollingFile name="RollingFile" fileName="${web:rootDir}/logs/history.log"
      filePattern="log/$${date:yyyy-MM}/history-%d{MM-dd-yyyy}-%i.log.gz">
   <PatternLayout charset="UTF-8" pattern="%d{yyyy-MM-dd &#39;at&#39; HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
   <SizeBasedTriggeringPolicy size="50MB"/>
  </RollingFile>
 </appenders>
 <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
 <loggers>
  <!--建立一个默认的root的logger-->
  <root level="trace">
   <appender-ref ref="Error"/>
   <appender-ref ref="RollingFile"/>
   <appender-ref ref="Console"/>
  </root>
 </loggers>
</configuration>

4. 일반 프로젝트와 웹 프로젝트

일반 프로젝트의 경우 정상적으로 사용할 수 있습니다. 위 구성이 완료되면 웹 프로젝트의 경우 로그 파일이 생성되지 않습니다. web의 8459cedd22f378aa35db2cd2b63decac 루트 노드 아래에 다음 구성을 추가해야 합니다. 해당 내용은 모든 사람의 학습이나 작업에 특정 도움이 될 수 있습니다. 궁금한 사항이 있으면 메시지를 남겨주세요. PHP 중국어 웹사이트를 지원해 주셔서 감사합니다.

log4j를 사용하여 Java에서 로그를 기록하는 방법에 대한 자세한 관련 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.