2015-12-16 20 views
5

Tôi có một dự án nhỏ với Spring Boot và maven, và bây giờ tôi đang cố gắng cấu hình logback để ghi vào một tập tin. Tôi muốn nó ghi vào một tập tin được đưa ra bởi ${project.build.directory}/${log.folder}/logfile.log, do đó, một thư mục con của thư mục xây dựng, là ${log.folder} thuộc tính mà tôi chỉ định trong một tệp application.properties, đặt dưới thư mục /resources của tôi.logback không tìm thấy thuộc tính của maven project.build.directory

Đây là logback.xml tôi

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <include resource="org/springframework/boot/logging/logback/base.xml"/> 
    <logger name="org.springframework.boot" level="INFO"/> 
    <logger name="org.springframework.security" level="ERROR"/> 
    <logger name="org.glassfish.jersey" level="DEBUG"/> 

    <property resource="application.properties"/> 

    <appender name="DUMMY_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
     <file>${project.build.directory}/${log.folder}/logfile.log</file> 
     <encoder> 
      <pattern>%d{"yyyy-MM-dd HH:mm:ss,SSS zzz"}, [%thread] %-5level %logger{5} - %msg%n 
      </pattern> 
     </encoder> 
     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
      <fileNamePattern>${log.folder}/spring.log.%d</fileNamePattern> 
     </rollingPolicy> 
    </appender> 

    <logger name="xxxxxx" level="INFO" additivity="false"> 
     <appender-ref ref="DUMMY_APPENDER"/> 
    </logger> 

    <root level="INFO"> 
     <appender-ref ref="DUMMY_APPENDER"/> 
    </root> 
</configuration> 

Nó viết các bản ghi, nhưng vấn đề của tôi là khi tôi chạy ứng dụng, nó tạo ra một thư mục project.build.directory_IS_UNDEFINED, sau đó đặt log.folder tôi dưới nó. Nó nói in the documentation, rằng

Là công cụ xây dựng của nó, logback dựa vào Maven, một công cụ xây dựng mã nguồn mở được sử dụng rộng rãi .

Và khi, trong logback.xml, tôi bắt đầu nhập $ {pro ... thì IDE của tôi hiển thị một tập hợp có sẵn maven implicit properties.

Vì vậy, nó sẽ làm việc, nhưng nó không. Bất kỳ ý tưởng tại sao?

Trả lời

2

${project.build.directory} là thuộc tính của Maven, chỉ có sẵn trong khi xây dựng maven. Mặt khác, Logback đang được sử dụng trong thời gian chạy của ứng dụng. Vì vậy, rõ ràng là ${project.build.directory} không được xác định khi chạy.

Bạn cần phải chọn vị trí sẽ được điều chỉnh theo môi trường thời gian chạy và cấu trúc liên kết triển khai của bạn.

4

Nó không hoạt động do những gì @luboskmac nói.

Đây là cách làm cho nó hoạt động. Tôi đã sao chép các vấn đề và đẩy lên một giải pháp ở đây: https://github.com/ajorpheus/logback-maven/releases

Dưới đây là một bản tóm tắt của việc sửa chữa: https://github.com/ajorpheus/logback-maven/commit/f245e5a6f4c13f9ba8e161c5452d296b653977d0

  1. Xác định một tài sản trong pom để giữ vị trí của logfile của bạn:

    enter image description here

  2. Sử dụng tài sản trong logback.xml appender:

enter image description here

  1. Enable lọc nguồn maven để cho bất kỳ thuộc tính maven quy định tại các tài nguyên được quét được thay thế bằng giá trị tương ứng của họ

enter image description here

0

Bạn có thể sử dụng thuộc tính vùng chứa triển khai.

Thích cho tomcat

${catalina.base}/logs 
Các vấn đề liên quan