2013-05-02 51 views
18

Tôi đang cố gắng sử dụng Log4j2 để in nhật ký mùa xuân vào một tệp và bảng điều khiển. Tôi đoán nó là một vấn đề trong cấu hình Log4j2 của tôi. Tôi đã không thể làm cho nó hoạt động được. Tôi có cấu hình này trong tập tin log4j2.xml tôi:Ghi nhật ký mùa xuân bằng cách sử dụng Log4j2

<?xml version="1.0" encoding="UTF-8"?> 
<configuration name="defaultConfiguration" status="warn" strict="true" monitorInterval="5"> 
    <properties> 
     <property name="patternlayout">%d{ISO8601} [%t] %-5level %logger{36} - %msg%n%throwable{full}</property> 
     <property name="filename">${env:MY_ROOT}/logs/mylog.log</property> 
     <property name="filenamePattern">${env:MY_ROOT}/logs/mylog-%d{yyyy-dd-MM}-%i.log.gz</property> 
    </properties> 
    <appenders> 
     <appender name="Console" type="Console" target="SYSTEM_OUT"> 
      <layout type="PatternLayout" pattern="${patternlayout}" /> 
     </appender> 
     <appender name="File" type="RollingFile" fileName="${filename}" filePattern="${filenamePattern}" bufferedIO="true" immediateFlush="true" 
     append="true"> 
      <layout type="PatternLayout" pattern="${patternlayout}" /> 
      <Policies> 
       <TimeBasedTriggeringPolicy /> 
       <SizeBasedTriggeringPolicy size="50 MB" /> 
      </Policies> 
      <DefaultRolloverStrategy max="30" /> 
     </appender> 
     <appender name="AsynchFile" type="asynch" blocking="true" bufferSize="128"> 
      <appender-ref ref="File" /> 
     </appender> 
    </appenders> 
    <loggers> 
     <root level="info"> 
      <appender-ref ref="Console" /> 
      <appender-ref ref="AsynchFile" /> 
     </root> 
     <logger name="org.springframework.beans"> 
      <appender-ref ref="Console" /> 
      <appender-ref ref="AsynchFile" /> 
     </logger> 
    </loggers> 
</configuration> 

Đây là những phụ thuộc mà tôi có trong tập tin của tôi pom: (có thể là một số trong số họ không phải)

<dependency> 
<groupId>org.slf4j</groupId> 
<artifactId>slf4j-api</artifactId> 
<version>1.6.6</version> 
</dependency> 

<dependency> 
<groupId>org.slf4j</groupId> 
<artifactId>slf4j-log4j12</artifactId> 
<version>1.6.6</version> 
</dependency> 

<dependency> 
<groupId>org.apache.logging.log4j</groupId> 
<artifactId>log4j-api</artifactId> 
<version>2.0-beta5</version> 
</dependency> 

<dependency> 
<groupId>org.apache.logging.log4j</groupId> 
<artifactId>log4j-core</artifactId> 
<version>2.0-beta5</version> 
</dependency> 
<dependency> 
<groupId>org.apache.logging.log4j</groupId> 
<artifactId>log4j-1.2-api</artifactId> 
<version>2.0-beta5</version> 
</dependency> 

<dependency> 
<groupId>com.lmax</groupId> 
<artifactId>disruptor</artifactId> 
<version>3.0.0.beta3</version> 
</dependency> 

Tôi không làm bất cứ điều gì liên quan đến mùa xuân trong mã Java của tôi. Tôi đang sử dụng lớp Main từ Apache Camel để đọc cấu hình spring của tôi và nạp các bean.

Tôi đang làm gì sai? Cảm ơn!

Chỉnh sửa: Tôi không nhận nhật ký mùa xuân ở bất kỳ đầu ra nào (bảng điều khiển hoặc tệp). Tuy nhiên, tôi có thể nhận được các bản ghi tôi tạo ra trong mã java của tôi. Tôi hy vọng điều này sẽ giúp làm rõ.

Trả lời

15

Nhìn vào các phụ thuộc trong pom của bạn, bạn có cái này: slf4j-log4j12. Điều này gây ra các câu lệnh log đối với api slf4j để được định tuyến đến việc thực hiện Log4j-1.2. Bạn có thể muốn chúng được định tuyến đến việc thực hiện Log4j-2.0. Bạn có thể thay thế slf4j-log4j12 bằng log4j-slf4j-impl và thử lại không?

+0

Tôi đã cập nhật bài đăng của mình để bạn có thể có thêm thông tin về vấn đề của mình. Cảm ơn bạn vì sự giúp đỡ. – hveiga

+0

Tôi không thấy bạn trả lời cho đến hôm nay, tôi xin lỗi! Tôi sẽ kiểm tra nó và tôi sẽ cho bạn biết. Cảm ơn bạn đã trả lời. – hveiga

+1

Vài tháng trễ, nhưng nó đã hoạt động! Cảm ơn một lần nữa. – hveiga

19

Vấn đề này gây ra bởi việc sử dụng lò xo thông thường-logging 1.x, vì vậy nếu bạn muốn có khai thác gỗ này chuyển đến Log4j 2, bạn cần thêm phụ thuộc vào pom.xml của bạn

<dependency> 
    <groupId>org.apache.logging.log4j</groupId> 
    <artifactId>log4j-jcl</artifactId> 
    <version>2.1</version> 
</dependency> 

không loại bỏ của bạn thông tin đăng nhập phổ biến 1.X phụ thuộc

+3

Bạn có thể muốn thêm rằng phiên bản log4j-jcl cần phải khớp với phiên bản log4j2 được sử dụng hoặc sẽ có sự cố không khớp với lớp. –

+0

Điều này giải quyết vấn đề khai thác mùa xuân của tôi. Cảm ơn! –

Các vấn đề liên quan