Günlük kaydını yapmak için logback/slf4j kullanıyorum. Bazı verileri analiz etmek için günlük dosyamı ayrıştırmak istiyorum, bu yüzden büyük bir büyük dosyayı (çoğunlukla hata ayıklama ifadelerinden oluşan) ayrıştırmak yerine, her bir ayrı dosyaya giriş yapan iki logger örneğine sahip olmak istiyorum; Biri analitik ve bir bütün amaçlı kayıt için. Bunun Logback veya bunun için herhangi bir başka kaydedici ile mümkün olup olmadığını bilen var mı?Farklı iletilerin iki dosyaya günlüğe kaydedilmesi için günlüğe kaydetme
108
A
cevap
223
Böyle bir şeyi, geri almada yapmak çok olasıdır. İşte bir örnek yapılandırma aşağıdaki gibidir: Sonra
<?xml version="1.0"?>
<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>logfile.log</file>
<append>true</append>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
</encoder>
</appender>
<appender name="ANALYTICS-FILE" class="ch.qos.logback.core.FileAppender">
<file>analytics.log</file>
<append>true</append>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
</encoder>
</appender>
<!-- additivity=false ensures analytics data only goes to the analytics log -->
<logger name="analytics" level="DEBUG" additivity="false">
<appender-ref ref="ANALYTICS-FILE"/>
</logger>
<root>
<appender-ref ref="FILE"/>
</root>
</configuration>
kurulum ediyorum iki ayrı kaydediciler, her şey için ve biri şöyle analiz verilerini günlüğe:
benim durumumdaLogger analytics = LoggerFactory.getLogger("analytics");
1
Ben sınıf isimleri terk etmek istedim adı
private static final Logger log = LoggerFactory.getLogger(ScheduledPost.class);
log ve ben birkaç tür sınıfları vardı, bu yüzden benim logbook.xml
1
İstediğiniz kadar çok sayıda günlükleyiciniz olabilir. Ancak, farklı bir şekilde oturum açmanız için gereken her paket için daha iyisi vardır. Daha sonra bu paketdeki ve alt paketlerindeki tüm sınıflar o özel kaydediciyi alacaktır. Bunların hepsi kök kaydediciyi paylaşabilir ve günlük verilerini additive = "true" kullanarak root logger appender'a gönderebilir. İşte bir örnek:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="pattern" value="%date{HH:mm:ss.SSS} %-5p %logger{36}
%X{akkaSource} [%file:%line] - %m%n" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date{HH:mm:ss.SSS} %-5p %logger{36} %X{akkaSource} [%file:%line] - %m%n</pattern>
</encoder>
</appender>
<appender name="abc" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.base}/logs/worker.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.base}/logs/worker-%d{yyyy-MM-dd_HH}.log</fileNamePattern>
<maxHistory>360</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${pattern}</pattern>
</encoder>
</appender>
<appender name="xyz" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.base}/logs/transformer.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.base}/logs/transformer-%d{yyyy-MM-dd_HH}.log</fileNamePattern>
<maxHistory>360</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${pattern}</pattern>
</encoder>
</appender>
<logger name="com.xxx.yyy.zzz" level="INFO" additivity="true">
<appender-ref ref="xyz"/>
</logger>
<logger name="com.aaa.bbb.ccc" level="INFO" additivity="true">
<appender-ref ref="abc"/>
</logger>
<root>
<level value="INFO" />
<appender-ref ref="STDOUT" />
</root>
İlgili konular
- 1. CocoaLumberjack FileLogger birden fazla dosyaya günlüğe kaydetme
- 2. mod_wsgi ile günlüğe kaydetme hatalarını günlüğe kaydetme
- 3. Selenium'da günlüğe kaydetme (Python'dan)
- 4. Flask'ta günlüğe kaydetme basitleştirme
- 5. Glassfish Günlüğe kaydetme
- 6. py.test günlüğe kaydetme denetimi
- 7. Günlüğe kaydetme düzeyini değiştirmemiş
- 8. Günlüğe kaydetme ve günlüğe kaydetme gün ışığından yararlanma
- 9. İleti/günlüğe kaydetme İnce
- 10. Raylar Günlüğe Kaydetme API'si
- 11. python günlüğe kaydetme alternatifleri
- 12. SOAP günlüğe kaydetme ekseni2
- 13. C günlüğe kaydetme kitaplıkları
- 14. Farklı ortamlarda e-postaların günlüğe kaydedilmesi ve gönderilmesi
- 15. Farklı Logback ekleri için pakete özel günlüğe kaydetme düzeyleri
- 16. log4j: pakete özgü günlüğe kaydetme
- 17. Django 1.3 günlüğe kaydetme kurulumumu neden tüm iletilerin iki kez çıkmasına neden oluyor?
- 18. Perl'de çıktı olarak günlüğe kaydetme
- 19. objektif-c en iyi uygulamaları günlüğe kaydetme
- 20. Spdlog ile kütüphaneden günlüğe kaydetme
- 21. Farklı bir ortamda uygulama için günlüğe kaydetme Log4j
- 22. RestTemplate günlüğe kaydetme POST verileri
- 23. ASP.NET MVC'de günlüğe kaydetme hataları
- 24. Groovy Komut Dosyası'nda Günlüğe Kaydetme
- 25. nginx'de proxy etkinliğini günlüğe kaydetme
- 26. Nodejs winston günlüğe kaydetme kütükleri
- 27. Python günlüğe kaydetme yapılandırma dosyası
- 28. py.test: hata sayısını günlüğe kaydetme
- 29. Python günlüğe kaydetme özel durumu
- 30. bahar JNDI günlüğe kaydedilmeden önce günlüğe kaydetme başlatıldı
Ben no-satır besleme appender ve aynı dosyaya düzenli appender olabilir böylece bu tür şeyleri yapmak gerekir. Bu bilgi için teşekkürler. – djangofan
IMO additivity = false farklı appender-ref belirtilmişse varsayılan olmalıdır. Bazı zamanlayıcı olaylarından dolayı bazı modüllerin çok sık log jeneratörler olacağı çok sık başvuruyor ve bu günlükleri farklı dosyalara ayırmak istiyoruz. Aynı günlüğün 10 farklı dosyada günlüğe kaydedilmesi gerçekten mantıklı değil. Yani varsayılan olarak bir özellik seçmeli olmalıdır. Geri dönüş bir yeniden yazım olduğundan aynı hata aynı yazar tarafından düzeltilmiş olmalıdır. –
Sırasıyla farklı dosyalarda hata, hata ayıklama, bilgi mesajları kaydetmek istiyorum. Logback.xml – Qasim