Selamlar,
Log4j kullanırken, bir class içinden farklı appender neseneleri kullanarak birden fazla dosya/console/email çıktısı istiyorum. Mesela
XXException oluştuğu zaman bu hatayı XX ekibine
YYException oluştuğu zaman bu hatayı YY ekibine
Farklı dosyalarla göstermek istiyorum.
Bunun için nasıl bir yöntem izlemem gerekir.
Selam,
Log4j de multiple appender desteği mevcut,
Örnek olarak File ve Console çıktısı almak istersen aşağıdaki tanımları eklemen yeterli;
Aşağıdaki gibi bir log4j.properties dosyası ile bir ekibe mail atma diğer ekibe ise dosya üzerinden göstermeyi denedik güzel bir şekilde oldu.
Biz bir ekibe sadece error(hata) mesajlarını atmak diğer ekibe ise detaylı log göstermek istediğimiz ve hataların tipleri de değişik olduğu için iyice ayırma yoluna gittik.
İki farklı logger class açtık mail atacaklarımızı ve dosya ile çıkacakları farklı logger’lar ile logladık.
log4j.properties
log4j.rootCategory=INFO, O
log4j.category.userlog=INFO, userlog
log4j.category.programlog=INFO, programlog
log4j.appender.O=org.apache.log4j.ConsoleAppender
log4j.appender.O.layout=org.apache.log4j.PatternLayout
log4j.appender.O.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x – %C.%M(%F:%L) – %m%n
log4j.appender.userlog=org.apache.log4j.RollingFileAppender
log4j.appender.userlog.BufferSize=9
log4j.appender.userlog.File=userlog.log
log4j.appender.userlog.MaxFileSize=1000KB
log4j.appender.userlog.MaxBackupIndex=100
log4j.appender.userlog.layout=org.apache.log4j.PatternLayout
log4j.appender.userlog.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x – %C.%M(%F:%L) – %m%n
#email notification for team
log4j.appender.programlog=org.apache.log4j.net.SMTPAppender
[email protected]
log4j.appender.programlog.SMTPPort=587
[email protected]
log4j.appender.programlog.SMTPPassword=password
[email protected]
[email protected]
log4j.appender.programlog.Subject=Subject
log4j.appender.programlog.layout=org.apache.log4j.HTMLLayout
log4j.appender.programlog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p – %l – %m%n
log4j.appender.programlog.BufferSize=100
log4j.appender.programlog.Threshold=ERROR
Kod
public class App {
static private Logger userLog = Logger.getLogger(“userlog”);
static private Logger prgLog = Logger.getLogger(“programlog”);
public static void main(String[] args) {
System.out.println(“Started”);
int i = 0 ;
while (true) {
i++;
userLog.info(i + “-from userlog”);
prgLog.error(i + “-from programlog”);
System.out.println(“End”);
try {
Thread.sleep(100);
} catch (Exception e) {
}
}
}
}