اموزش Log4J

ارسال پست
java2
مدیر کل سایت
پست: 178
تاریخ عضویت: پنج شنبه 13 دی 1397, 6:49 pm

اموزش Log4J

پست توسط java2 » پنج شنبه 20 دی 1397, 2:05 am

ابزار Log4J یکی از ابزار های محبوب لاگیری در جاوا محسوب میشود، سوالی اینجاست که دستوراتی مانند System.out.println چه اشکالی ایجاد می کند که موضوع استفاده از ابزار های لاگ مطرح میشود؟ فرض کنید برنامه ای با 1000 کلاس تولید شده است و تصمیم مدیر فنی تیم بر آن است که لاگ های غیر ضرور حذف شوند. یک کابوس به نظر می آید اگر شما در این مورد از ابزار لاگ استفاده نکرده باشید. حال فرض کنید نه تنها مدیر فنی تیم از شما انتظار قبل را دارد، بلکه انتظار دارد لاگ های مورد نظر را به جای Console در بانک اطلاعاتی ذخیره کنید.

ابزار های لاگ معمولا دارای چند 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.properties در مسیر اصلی پروژه خود با محتوای زیر ایجاد کنید:

کد: انتخاب همه


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

حال کافی است سطح لاگ را به WARN تبدیل کنید

کد: انتخاب همه


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


ارسال پست