乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      使用log4j讓日志寫入數(shù)據(jù)庫

       aaie_ 2017-01-16
      之前做的一個項目有這么個要求,在日志管理系統(tǒng)里,需要將某些日志信息存儲到數(shù)據(jù)庫里,供用戶、管理員查看分析。因此我就花了點時間搞了一下這一功能,各位請看。
      摘要:我們知道log4j能提供強大的可配置的記日志功能,有寫文件的、打印到控制臺的等等,但有時我們需要它把日志輸出到后臺數(shù)據(jù)庫中,log4j的強大的可擴展性支持了這一點,以下就是具體的實現(xiàn)。
      關(guān)鍵詞:log,log4j,日志,Java,DB,數(shù)據(jù)庫,slf4j
      前提:已經(jīng)配置好slf4j、log4j,能正常的往文件或控制臺寫日志
      需求:將日志寫入到數(shù)據(jù)庫中。
      說明:使用log4j-1.2.17.jar,slf4j-api-1.7.5.jar,slf4j-log4j12-1.6.6.jar。

       

      步驟一:

      你得先能寫入數(shù)據(jù)庫,編寫一個能往數(shù)據(jù)庫日志表中寫數(shù)據(jù)的接口,無論是WebService還是什么,這里假如是一個Java接口。
      Log是定義的一個日志類,使用LogService對象調(diào)用logBll.add(Log log)方法即能夠向數(shù)據(jù)庫中添加一條日志信息。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      public class Log {
          private Long id;
          private String logNum;
          private String userId;
          private Calendar time;
          private int type;
          private String content;
          ...
      }

      步驟二:

      編寫一個繼承自AppenderSkeleton類的類,并重寫它的append方法。在append方法里面,即調(diào)用了上一步定義的Java接口,logBll.add(log),向數(shù)據(jù)庫中寫入一條日志信息。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      public class DBAppender extends AppenderSkeleton {
          private LogService logBLL = new LogService();
          @Override
          protected void append(LoggingEvent arg0) {
              if (!arg0.getLoggerName().startsWith(Constants.ProjetNS))
                  return;
              Log log = new Log();
              log.setType(arg0.getLevel().toInt());
              log.setTime(Calendar.getInstance());
              log.setUserId("system");
              log.setContent(arg0.getRenderedMessage());
              logBll.add(log);
          }
      }

       

      步驟三:

      改新log4j.properties配置文件,類似如下所示。

       

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      # Root logger option
      log4j.rootLogger=WARN, stdout, file, db
      # Direct log messages to stdout
      log4j.appender.stdout=org.apache.log4j.ConsoleAppender
      log4j.appender.stdout.Target=System.out
      log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
      log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
      log4j.appender.file = org.apache.log4j.DailyRollingFileAppender
      log4j.appender.file.File = logs/log.log
      log4j.appender.file.Append = true
      log4j.appender.file.Threshold = ERROR
      log4j.appender.file.layout = org.apache.log4j.PatternLayout
      log4j.appender.file.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
      log4j.appender.db = com.aitanjupt.angel.log.DBAppender 
      以上文件主要增加配置了一個日志輸出方向,向數(shù)據(jù)庫輸出,并指定了具體的處理類。
      在需要輸出日志的地方,正常的使用:
      private Logger logger = LoggerFactory.getLogger(SpringServiceSupport.class);
      logger.error(ex);...即可。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多