اموزش Log4J
ارسال شده: پنج شنبه 20 دی 1397, 2:05 am
ابزار Log4J یکی از ابزار های محبوب لاگیری در جاوا محسوب میشود، سوالی اینجاست که دستوراتی مانند System.out.println چه اشکالی ایجاد می کند که موضوع استفاده از ابزار های لاگ مطرح میشود؟ فرض کنید برنامه ای با 1000 کلاس تولید شده است و تصمیم مدیر فنی تیم بر آن است که لاگ های غیر ضرور حذف شوند. یک کابوس به نظر می آید اگر شما در این مورد از ابزار لاگ استفاده نکرده باشید. حال فرض کنید نه تنها مدیر فنی تیم از شما انتظار قبل را دارد، بلکه انتظار دارد لاگ های مورد نظر را به جای Console در بانک اطلاعاتی ذخیره کنید.
ابزار های لاگ معمولا دارای چند Level برای لاگ می باشند:
-DEBUG
-INFO
-WARNING
-ERROR
-FATAL
اولویت این لاگ ها دقیقا به ترتیب ذکر شده است و زمانی که سیستم لاگ گیری را مثلا بر روی WARNING قرار دهیم لاگ های مربوط به DEBUG و INFO نمایش داده نخواهند شد. حال اگر بر روی INFO قرار دهیم لاگ های مربوط به DEBUG نمایش داده نخواهد شد.
برای شروع کلاس را به شکل ذیل طراحی کنید:
سپس فایلی با نام log4j.properties در مسیر اصلی پروژه خود با محتوای زیر ایجاد کنید:
برنامه خود را اجرا کنید باید خروجی مشابه ذیل باشد.
حال کافی است سطح لاگ را به WARN تبدیل کنید
همانطور که در خروجی مشاهده خواهید کرد، خروجی به شکل ذیل خواهد بود.
ابزار های لاگ معمولا دارای چند Level برای لاگ می باشند:
-DEBUG
-INFO
-WARNING
-ERROR
-FATAL
اولویت این لاگ ها دقیقا به ترتیب ذکر شده است و زمانی که سیستم لاگ گیری را مثلا بر روی WARNING قرار دهیم لاگ های مربوط به DEBUG و INFO نمایش داده نخواهند شد. حال اگر بر روی INFO قرار دهیم لاگ های مربوط به DEBUG نمایش داده نخواهد شد.
برای شروع کلاس را به شکل ذیل طراحی کنید:
کد: انتخاب همه
import org.apache.log4j.Logger;
/**
* Created by Amirsam Bahador on 10/25/2016.
*/
public class TargetClass {
private static Logger logger = Logger.getLogger(TargetClass.class);
public static void main(String[] args) {
logger.debug("debug");
logger.info("info");
logger.warn("warn");
logger.error("error");
logger.fatal("fatal");
}
}
کد: انتخاب همه
log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
کد: انتخاب همه
2019-01-09 14:32:20,270 [main] INFO model.TargetClass - info
2019-01-09 14:32:20,270 [main] WARN model.TargetClass - warn
2019-01-09 14:32:20,270 [main] ERROR model.TargetClass - error
2019-01-09 14:32:20,271 [main] FATAL model.TargetClass - fatal
کد: انتخاب همه
log4j.rootLogger=WARN, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
کد: انتخاب همه
2019-01-09 14:34:24,529 [main] WARN model.TargetClass - warn
2019-01-09 14:34:24,530 [main] ERROR model.TargetClass - error
2019-01-09 14:34:24,530 [main] FATAL model.TargetClass - fatal