日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

slf4j绑定器_用于ADFLogger的SLF4J绑定–缺少的部分

發布時間:2023/12/3 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 slf4j绑定器_用于ADFLogger的SLF4J绑定–缺少的部分 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

slf4j綁定器

由于最好的原因,在我的日常工作中,我希望為ADF Logger Oracle ADF提供一個SLF4J適配器。 毫不奇怪,slf4j沒有用于ADFLogger的適配器,但是由于ADFLogger只是Java Util Logging的輕巧包裝,因此花了一個多小時來填補這一空白。

存儲庫中的測試用例(更像是主程序)將確認適配器框架與Oracle Diagnostic Logging配合良好,而不會破壞日志消息的格式。 (或多或少是ADFLogger提供的唯一優勢)。

您可以從github的存儲庫下載整個代碼庫 。 或者,如果您只對裝訂罐感興趣,請在此處下載 。

日志級別:

考慮到ADF記錄器(7)上的日志級別很多,而SLF4J(5)的級別較少,因此在ADF記錄器的某些級別上做出了折衷。 映射如下:

注意:在此調整過程中,不再支持日志級別FINER和CONFIG。

用法:

只需繼續使用SLF4J實例替換您的ADFLogger。

private static final Logger slfLogger = LoggerFactory.getLogger(LoggingChecker.class);

代替

private static final ADFLogger adfLogger= ADFLogger.createADFLogger(LoggingChecker.class);

記錄方式

一個。 記錄到各個級別

@Testpublic void testLoggerLevels(){adfLogger.finest("finest Message from ADF Logger");slfLogger.trace("finest Message from SLF Logger");adfLogger.fine("fine Message from ADF Logger");slfLogger.debug("fine Message from SLF Logger");adfLogger.info("info Message from ADF Logger");slfLogger.info("info Message from SLF Logger");adfLogger.warning("warning Message from ADF Logger");slfLogger.warn("warning Message from SLF Logger");adfLogger.severe("severe Message from ADF Logger");slfLogger.error("severe Message from SLF Logger");}

b。 記錄異常

其中dummyException繼承了Throwable

C。 記錄參數

開發說明:

  • ADF Logger Adapter框架由兩個核心類( ADFLoggerFactory.java和ADFLoggerAdapter.java )以及其他三個幫助器類組成。
  • 適配器可以支持多個記錄器,包括ADFLogger的ROOT記錄器(這是默認記錄,名稱為空字符串)。
  • SLF4J使用ADFLoggerFactory.java實例化ADFLoggerAdapter也就不足為奇了。
  • 對于每個Logger實例, ADFLoggerAdapter.java組成一個ADFLoggerAdapter.java實例(綁定到記錄器名稱),并將調用委托給ADFLogger本身。
  • fillCallerData方法從整個日志記錄堆棧中篩選ADFLoggerAdapter的堆棧框架,以便將調用者類和方法名稱保留為主機應用程序中的名稱,而不是Adapter框架類中的名稱。
  • 測試用例(很好)

    public class TestClass {private static final ADFLogger adfLogger= ADFLogger.createADFLogger(TestClass.class);private static final Logger slfLogger = LoggerFactory.getLogger(TestClass.class);private List<String> dummyList1=null;private List<Integer> dummyList2=null;private Exception dummyException=null;@Beforepublic void setUp(){dummyList1=new ArrayList<String>();dummyList1.add("Rock");dummyList1.add("Paper");dummyList1.add("Scissors");dummyList2=new ArrayList<Integer>();dummyList2.add(21);dummyList2.add(22);dummyList2.add(23);dummyException=new Exception("Mind blowing Exception");}@Testpublic void testLoggerLevels(){adfLogger.finest("finest Message from ADF Logger");slfLogger.trace("finest Message from SLF Logger");adfLogger.fine("fine Message from ADF Logger");slfLogger.debug("fine Message from SLF Logger");adfLogger.info("info Message from ADF Logger");slfLogger.info("info Message from SLF Logger");adfLogger.warning("warning Message from ADF Logger");slfLogger.warn("warning Message from SLF Logger");adfLogger.severe("severe Message from ADF Logger");slfLogger.error("severe Message from SLF Logger");}@Testpublic void testException(){adfLogger.severe("severe Message from ADF Logger", dummyException);slfLogger.error("severe Message from SLF Logger", dummyException);}@Testpublic void testParameters(){adfLogger.severe("severe Message from ADF Logger Param :{0}", dummyList1 );slfLogger.error("severe Message from SLF Logger Param :{}", dummyList1);adfLogger.severe("severe Message from ADF Logger Param 1 :[{0}] \n [{1}]", new Object[]{dummyList1, dummyList2} );slfLogger.error("severe Message from SLF Logger Param :{} \n {} ", dummyList1, dummyList2);slfLogger.error("severe Message from SLF Logger Param :[{}] \n [{}] ", new Object[]{dummyList1, dummyList2});}

    輸出:

    記錄器級別:

    Jul 01, 2013 4:21:18 PM org.slf4j.test.TestClass testLoggerLevels INFO: info Message from ADF Logger Jul 01, 2013 4:21:18 PM org.slf4j.test.TestClass testLoggerLevels INFO: info Message from SLF Logger Jul 01, 2013 4:21:18 PM org.slf4j.test.TestClass testLoggerLevels WARNING: warning Message from ADF Logger Jul 01, 2013 4:21:18 PM org.slf4j.test.TestClass testLoggerLevels WARNING: warning Message from SLF Logger Jul 01, 2013 4:21:18 PM org.slf4j.test.TestClass testLoggerLevels SEVERE: severe Message from ADF Logger Jul 01, 2013 4:21:18 PM org.slf4j.test.TestClass testLoggerLevels SEVERE: severe Message from SLF Logger

    測試參數:

    Jul 01, 2013 4:32:04 PM org.slf4j.test.TestClass testParameters SEVERE: severe Message from ADF Logger Param :[Rock, Paper, Scissors] Jul 01, 2013 4:32:04 PM org.slf4j.test.TestClass testParameters SEVERE: severe Message from SLF Logger Param :[Rock, Paper, Scissors] Jul 01, 2013 4:32:04 PM org.slf4j.test.TestClass testParameters SEVERE: severe Message from ADF Logger Param 1 :[[Rock, Paper, Scissors]][[21, 22, 23]] Jul 01, 2013 4:32:04 PM org.slf4j.test.TestClass testParameters SEVERE: severe Message from SLF Logger Param :[Rock, Paper, Scissors][21, 22, 23] Jul 01, 2013 4:32:04 PM org.slf4j.test.TestClass testParameters SEVERE: severe Message from SLF Logger Param :[[Rock, Paper, Scissors]][[21, 22, 23]]

    測試異常:

    Jul 01, 2013 4:32:28 PM org.slf4j.test.TestClass testException SEVERE: severe Message from ADF Logger java.lang.Exception: Mind blowing Exceptionat org.slf4j.test.TestClass.setUp(TestClass.java:38)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method.invoke(Unknown Source)at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)at org.junit.runners.ParentRunner.run(ParentRunner.java:300)at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)Jul 01, 2013 4:32:28 PM org.slf4j.test.TestClass testException SEVERE: severe Message from SLF Logger java.lang.Exception: Mind blowing Exceptionat org.slf4j.test.TestClass.setUp(TestClass.java:38)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method.invoke(Unknown Source)at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)at org.junit.runners.ParentRunner.run(ParentRunner.java:300)at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

    參考: ADFLogger的SLF4J綁定– Rerun.me博客上我們JCG合作伙伴 Arun Manivannan 的缺失作品 。

    翻譯自: https://www.javacodegeeks.com/2013/11/slf4j-binding-for-adflogger-the-missing-piece.html

    slf4j綁定器

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的slf4j绑定器_用于ADFLogger的SLF4J绑定–缺少的部分的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。