2012-05-22 42 views
9

Trong dự án Spring + Hibernate của tôi, tôi đã ghi nhật ký bằng SLF4J 1.6.4 với LogBack. Bây giờ, tôi đã thêm Ehcache 2.2.0 (thông qua ehcache-spring-annotations-1.1.3). Bộ nhớ đệm dường như hoạt động như phương thức, được chú thích bằng @Cacheable, không còn được thực hiện nữa, mặc dù trả lại kết quả chính xác. Nhưng, tôi thích xem nhật ký được viết bởi Ehcache. Như Ehcache cũng sử dụng SLF4J, tôi cho là, bản ghi nên được ghi vào tệp nhật ký của tôi. Nhưng điều này không xảy ra. Tệp logback.xml có như sau.Cách bật ghi nhật ký của Ehcache

<root level="info"> 
    <appender-ref ref="STDOUT"/> 
    <appender-ref ref="ROLLING"/> 
</root> 

Thêm sau cũng không giúp

<logger name="net.sf.ehcache"> 
</logger> 

Ehcache.xml

<cache name="sampleCache1" 
     eternal="false" 
     overflowToDisk="true" 
     timeToIdleSeconds="300" 
     timeToLiveSeconds="600"   
     memoryStoreEvictionPolicy="LFU"   
     /> 

hãy tư vấn cho tôi để vượt qua vấn đề.

Ehcache đang sử dụng SLF4J 1.6.1, trong khi dự án của tôi đang sử dụng SLF4J 1.6.4. Nó có thể gây ra vấn đề gì không?

Cảm ơn

+0

Tôi chỉ phát hiện ra rằng ehcache không đăng nhập tất cả mọi thứ tôi mong đợi. Vì vậy, có bạn nhìn ehcache nếu nó thực sự đăng nhập những điều bạn mong đợi? – codesmith

Trả lời

44

EhCache đăng nhập rất nhiều ở mức DEBUG. Trước hết, đoạn cấu hình này lọc ra tất cả các báo cáo khai thác gỗ bên dưới INFO:

<root level="info"> 

Thay đổi nó để

<root level="ALL"> 

Thứ hai

<logger name="net.sf.ehcache"> 

cần một mức độ khai thác gỗ tăng

<logger name="net.sf.ehcache" level="ALL"/> 

Sau đó, bạn sẽ thấy nhiều câu lệnh ghi nhật ký từ EhCache (và những người khác).

+0

Cảm ơn Tomasz. Giải pháp của bạn hoạt động. – Tamim

+3

Xin lỗi không có đủ danh tiếng để bỏ phiếu :) – Tamim

+0

Ai đó có thể vui lòng xem xét nhiệm vụ tôi đã đăng: http://stackoverflow.com/questions/41734999/spring-framework-application-properties-vs-logback- xml – user18853

5

Tôi cũng thấy thuận tiện khi bật ghi nhật ký DEBUG org.springframework.cache vì tôi đang sử dụng tính năng lưu trong bộ đệm ẩn của Spring Framework 4.2.1 (@Cacheable v.v.).

+0

có nghĩa là thêm dòng này vào application.properties: "logging.level.org.springframework.cache: DEBUG" – user18853

+0

Yep sẽ hoạt động, nhưng cũng có [các cách khác để thực hiện nó] (https: // docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html). – ben3000

5

Theo ý kiến ​​của tôi, hãy đặt mức ghi nhật ký gốc thành ALL không phải là một ý tưởng hay.

Điều này có nghĩa là ALL thông điệp tường trình của mọi cấp sẽ được thông qua (trừ khi bạn đặt ngưỡng trên người đăng ký của mình). Thay vào đó, tôi đề nghị bạn thiết lập mức logger gốc hợp lý, chẳng hạn như INFO hoặc WARN, và sau đó đặt mức nhật ký của các logger cá nhân nếu bạn cần thêm thông tin cụ thể.

Bằng cách này bạn không tạo ra một khu rừng thông tin không cần thiết.

Tôi đề nghị một cái gì đó giống như dưới đây:

<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> 
    <param name="Target" value="System.out"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/> 
    </layout> 
</appender> 

<logger name="net.sf.ehcache"> 
    <level value="DEBUG"/> 
</logger> 

<root> 
    <priority value ="INFO" /> 
    <appender-ref ref="CONSOLE" /> 
</root> 

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