Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用clojure tools.logging在logback中进行多步骤配置_Clojure_Logback - Fatal编程技术网

使用clojure tools.logging在logback中进行多步骤配置

使用clojure tools.logging在logback中进行多步骤配置,clojure,logback,Clojure,Logback,我正在尝试使用logback&clojure tools.logging在clojure应用程序中使用自定义appender 我的配置如下所示: <appender name="Sentry" class="net.kencochrane.raven.logback.SentryAppender"> <dsn>some-dsn</dsn> </appender> 快速的google搜索会找到一个文档,以编程方式使用JoranConfigu

我正在尝试使用logback&clojure tools.logging在clojure应用程序中使用自定义appender

我的配置如下所示:

<appender name="Sentry" class="net.kencochrane.raven.logback.SentryAppender">
    <dsn>some-dsn</dsn>
</appender>

快速的google搜索会找到一个文档,以编程方式使用JoranConfigurator执行多步骤配置,但实际上我在tools.logging中没有看到执行多步骤配置的公开方法。除了修改工具和日志记录,还有什么建议吗?我错过了什么明显的东西吗?感谢您的时间。

工具。日志记录不会对底层日志记录系统进行任何配置。在logback的情况下,它只是通过slf4j与日志系统通信。实际日志的配置完全在logback端。

一个简单的方法可能是使用
logback.xml
config文件和与clojure/tools.logging的logback依赖关系。基于此,您似乎需要以下依赖项:

[org.clojure/tools.logging "0.3.1" :exclusions [org.clojure/clojure]]
[org.slf4j/slf4j-api       "1.7.25"]
[org.codehaus.janino/janino     "3.0.7"]  ; for conditional config processing
[ch.qos.logback/logback-classic "1.2.3"]
[ch.qos.logback/logback-core    "1.2.3"]
[com.getsentry.raven/raven-logback "8.0.2"]

该页面还包含可以使用的Logback XML配置片段。对于MDC属性,您可能需要看一看。

这里有一个使用
sentry java logback的简单设置,
副署长:

[org.clojure/tools.logging  "0.4.1"]    
[ch.qos.logback/logback-classic  "1.2.3"]    
[io.sentry/sentry-logback "3.2.0"]
和logback.xml:

<!-- Sentry -->
<appender name="SENTRY" class="io.sentry.logback.SentryAppender">
    <encoder>
        <pattern>${defaultPattern}</pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>ERROR</level>
    </filter>
    <options>
        <dsn>https://........</dsn>
        <release>1.0.0</release>
        <serverName>ABCDE</serverName>
        <environment>production</environment>
    </options>
    <minimumBreadcrumbLevel>DEBUG</minimumBreadcrumbLevel>
</appender>

<!-- ....THIS MIGHT CHANGE.... -->
<root level="DEBUG">
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="SENTRY"/>
</root>


Kotarak,谢谢你的回复。在这种情况下,错误是由于slf4j的行为而产生的,因为工具。日志记录是目前我与slf4j交互的方式,它似乎是我寻找解决方案的自然场所(请随意不同意)。此外,tools.logging看起来已经与底层实现进行了一定程度的交互,在src/main/clojure/clojure/tools/logging/impl.clj中,我看到它正在测试是否可以从log4j/etc加载类,然后扩展记录器。在我看来,为底层系统提供所需的接口似乎是合理的。如果您看到更好的解决方案LMKFWW,如果您包括logback classic,您将获得logback核心和slf4j api。
<!-- Sentry -->
<appender name="SENTRY" class="io.sentry.logback.SentryAppender">
    <encoder>
        <pattern>${defaultPattern}</pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>ERROR</level>
    </filter>
    <options>
        <dsn>https://........</dsn>
        <release>1.0.0</release>
        <serverName>ABCDE</serverName>
        <environment>production</environment>
    </options>
    <minimumBreadcrumbLevel>DEBUG</minimumBreadcrumbLevel>
</appender>

<!-- ....THIS MIGHT CHANGE.... -->
<root level="DEBUG">
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="SENTRY"/>
</root>