日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了Log4J2在OSGi環境中未設置為記錄器的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我使用Commons-Logging,它應該橋接到OSGi環境中的Log4J2,因此在pom.xml中添加了依賴項export-package和import-package,如下所示,但是記錄器沒有設置為Log4J2記錄器。沒有顯示任何錯誤,但是在調試時,我發現它被設置為JDK14Logger。

    <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.8.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.8.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-jcl</artifactId>
            <version>2.8.2</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>2.8.2</version>
        </dependency>

        <Export-Package>
            org.apache.logging.log4j.*,
            org.apache.commons.logging.*
        </Export-Package>
        <Import-Package>
            !org.apache.logging.log4j.*,
            !org.apache.commons.logging.*,
            *;resolution:=optional
        </Import-Package>

[更新]

從log4j用戶郵件列表中,我可以看出這是因為ServiceLoader的非模塊化性質。我在OSGi環境中查看了ServiceLoader的一些用法,以查找接口的實現,但仍然無法了解如何使其工作。

我也嘗試了使用pax日志記錄,但結果相同,只是記錄器現在設置為JclLogger

OSGI

正如Christian在另一個答案中所說,最適合登錄推薦答案的是pax-loging包。

Pax-Logging構建在SLF4J之上,可以使用不同的可能實現進行部署:

pax-logs-log4j2(Log4J2)
pax-Logging-Logback(Logback)

在我們使用pax-logging-service之前,pax-logging-service使用的是Log4J版本1,但不推薦使用,因為其他兩個實現都運行良好。

我個人沒有測試OSGI中的Logback實現,但Log4j2工作正常(有一些限制)。

此解決方案的好處之一是,您不能在捆綁包上導入任何日志記錄實現,唯一需要做的事情是:

聲明slf4j-api為提供的依賴項(maven作用域)
最終在maven中將slf4j-simple聲明為測試作用域

您不需要調整有關記錄任何捆綁包的任何maven-bundle-plugin選項。

以下是如何在ServiceMix版本7.0.1中執行此操作的步驟;此版本最初使用pax-loging-services,但下一步將顯示需要更改的內容。

通過(緊接啟動后)在Startup.properties中安裝捆綁包,您可以確保所有庫都在開始時加載。

這兩個將替換pax-logging-apipax-logging-service的舊版本,替換為pax-logging-log4j2

mvn:org.ops4j.pax.logging/pax-logging-api/1.11.13 = 8
mvn:org.ops4j.pax.logging/pax-logging-log4j2/1.11.13 = 8

然后在文件中:org.ops4j.pax.logging.cfg只提到一行:

org.ops4j.pax.logging.log4j2.config.file=${karaf.etc}/log4j2.xml

并將log4j2.xml文件添加到${karaf.etc}文件夾(安裝servicemix/etc)。

您必須復制${karaf.home}/system文件夾中的庫。

這是在您只需要標準日志文件的情況下。

現在來看限制:如果您需要將日志生成為json文檔,我只能在log4j2.xml中使用不推薦使用的JSONLayout

有關設置JSONLayout,請遵循my other answer。

簡而言之:

startup.properties中添加三個Jackson依賴項:

mvn:com.fasterxml.jackson.core/jackson-annotations/2.12.4 = 6
mvn:com.fasterxml.jackson.core/jackson-core/2.12.4 = 6
mvn:com.fasterxml.jackson.core/jackson-databind/2.12.4 = 6

pax-logging-log4j2-extra(如果您使用的是log4j2實現):

mvn:org.ops4j.pax.logging/pax-logging-log4j2-extra/1.11.13 = 6

在我的版本中,我必須在overrides.properties中添加以下三行:

mvn:com.fasterxml.jackson.core/jackson-core/2.12.4;range="[2,3)"
mvn:com.fasterxml.jackson.core/jackson-databind/2.12.4;range="[2,3)"
mvn:com.fasterxml.jackson.core/jackson-annotations/2.12.4;range="[2,3)"

我在github上使用servicemix 7.0.1創建了一個簡單的docker-compose,使用兩種創建json日志的方式(新的JsonTemplateLayout目前不起作用)。

這篇關于Log4J2在OSGi環境中未設置為記錄器的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:Log4j2 OSGi 中未 環境 記錄器 設置為
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定