标签: slf4j

停止 hive 的 RetryingHMSHandler 记录到 databricks 集群

我正在使用 azure databricks 5.5 LTS 以及 Spark 2.4.3 和 scala 2.11。几乎每个发送到 databricks 集群的请求都会出现以下错误日志

ERROR RetryingHMSHandler: NoSuchObjectException(message:There is no database named global_temp)
at org.apache.hadoop.hive.metastore.ObjectStore.getMDatabase(ObjectStore.java:487)
at org.apache.hadoop.hive.metastore.ObjectStore.getDatabase(ObjectStore.java:498)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
Run Code Online (Sandbox Code Playgroud)

虽然这不会影响我们正在尝试做的事情的最终结果,但我们的日志不断充满这些内容,并且浏览起来并不是很愉快。我尝试通过将以下属性设置为驱动程序和执行程序来关闭它

log4j.level.org.apache.hadoop.hive.metastore.RetryingHMSHandler=OFF
Run Code Online (Sandbox Code Playgroud)

只是后来才意识到 RetryingHMSHandler 类实际上使用 slf4j 记录器,有没有一种优雅的方法来克服这个问题?

log4j slf4j apache-spark azure-databricks

3
推荐指数
1
解决办法
1603
查看次数

使用可选参数记录日志

我有一个方法,我想添加特定的日志记录:

@Slf4j
@Service
public class SomethingService {

    public void doSomething(Something data, String comment, Integer limit) {
        Long id = saveSomethingToDatabase(data, comment);
        boolean sentNotification = doSomething(id);
        // ...

        // Log what you done.
        // Variables that always have important data: data.getName(), id
        // Variables that are optional: sentNotification, comment, limit 
        // (optional means they aren't mandatory, rarely contains essential data, often null, false or empty string).
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以简单地记录所有:

log.info("Done something '{}' and saved (id {}, sentNotification={}) with comment '{}' and …
Run Code Online (Sandbox Code Playgroud)

java log4j logback slf4j log4j2

3
推荐指数
1
解决办法
5278
查看次数

当“slf4j-api”和“slf4j-simple”已经导入时,如何解决“找不到SLF4J提供者”?

我在 gradle 项目中使用 Guice。运行main方法时,出现以下错误:

SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#noProviders for further details.
Run Code Online (Sandbox Code Playgroud)

我做了一些研究,并在dependencies文件部分添加了两个依赖项build.gradle,如下所示:

dependencies {
    ...
    implementation group: 'org.slf4j', name: 'slf4j-api', version: '2.0.0-alpha1'
    testImplementation group: 'org.slf4j', name: 'slf4j-simple', version: '2.0.0-alpha1'
}
Run Code Online (Sandbox Code Playgroud)

但错误仍然存​​在...

我需要通过 Guice 将 SLF4J 提供者与某些内容绑定吗?

我的main方法很简单,所以作为AbstractModuleGuice的类,如下所示(不确定它们是否相关):

public class Restful {
    public static void main(String[] args) {
        Injector injector = Guice.createInjector(new ApplicationModule());
    }
}
Run Code Online (Sandbox Code Playgroud)

public class ApplicationModule extends AbstractModule …
Run Code Online (Sandbox Code Playgroud)

java slf4j gradle

3
推荐指数
1
解决办法
3万
查看次数

Log4j 最新版本带有 slf4j-log4j12

使用slf4j-log4j12版本 2.0.0-alpha5 依赖项进行日志记录,从而拉取 Apache Log4j \xc2\xbb 1.2.17。需要将 Log4j 升级到最新版本,即 log4j-core \xc2\xbb 2.17.1,这样我就不必在代码库中进行更改。

\n

以下是 POM 片段和示例代码:

\n
  <dependencies>\n    <dependency>\n        <groupId>org.slf4j</groupId>\n        <artifactId>slf4j-log4j12</artifactId>\n        <version>2.0.0-alpha5</version>\n    </dependency>\n   </dependencies>\n
Run Code Online (Sandbox Code Playgroud)\n

示例代码:

\n
import org.apache.log4j.Logger;\npublic class Entry {\n    final static Logger logger = Logger.getLogger(Entry.class);\n    public static void main(String[] args) {\n        logger.info("Through Logging");\n        System.out.println("Logging tests");\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

log4j2有sl4j依赖吗?

\n

java logging log4j slf4j log4j2

3
推荐指数
1
解决办法
1万
查看次数

Lombok 中的 @XSlf4j 和 @Slf4j 注释有什么区别?

lombok.extern.slf4j.XSlf4j有人可以解释一下和之间的区别lombok.extern.slf4j.Slf4j吗?看起来XSlf4j是一个新添加的,为什么这个新注释被添加到Lombok库中。

java slf4j lombok spring-boot

3
推荐指数
1
解决办法
979
查看次数

如何使用变量和异常格式化错误日志

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

    private static final Logger log = LoggerFactory.getLogger(Twitter.class);

        } catch (TwitterException e) {
            // It prints the message as well as the exception
            // log.error("Unable to show status", e);

            // I would like to pass a status as well as an exception
            // Is this an appropriate log statement
            String status = "failed";
            log.error("Unable to show status {}", status, e);
        }
Run Code Online (Sandbox Code Playgroud)

上述log.error语句的一个变体log.error,将上面的语句正常工作.我不确定,因为我也传递了"身份".请澄清一下

java slf4j twitter4j

2
推荐指数
1
解决办法
938
查看次数

"此版本的SLF4J需要log4j版本1.2.12"警告与log4j 1.2.17

我有一个Java Maven项目,其依赖包括slf4j和它log4j adapter.我管理的版本log4j,slf4j-log4j12slf4j-api根据其最新版本http://mvnrepository.com,尤其是log4j的1.2.17版本已经超过1.2.12,但我仍然得到错误

SLF4J: This version of SLF4J requires log4j version 1.2.12 or later. 
    See also http://www.slf4j.org/codes.html#log4j_version 
Run Code Online (Sandbox Code Playgroud)

这对我来说完全不清楚.

我的Maven依赖管理如下所示:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.apache.jena</groupId>
            <artifactId>apache-jena-libs</artifactId>
            <type>pom</type>
            <version>2.10.0</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.5</version>
        </dependency>
    </dependencies>
</dependencyManagement>
Run Code Online (Sandbox Code Playgroud)

我该如何摆脱警告?

PS:我也得到了java.lang.NoSuchMethodError: org.apache.log4j.Logger.isTraceEnabled().

PPS:由于你的评论,我记得该程序有一个"lib"文件夹,它不是由Maven包含在类路径中,而是由Eclipse本身包含,所以冲突的依赖关系必须在那里.对不起,我完全忘记了我认为将Maven与lib文件夹混合是我的错.我想我必须尝试将尽可能多的库转换为maven依赖项.奇怪的是,即使我编辑"订单和导出"以将Maven依赖项置于顶部,问题仍然存在.

java eclipse log4j slf4j maven

2
推荐指数
1
解决办法
7611
查看次数

无法更改slf4j simplelogger的日志级别

jdk 6,slf4j 1.7.5

布局ble:

.
??? com
?   ??? to
?       ??? Main.class
??? simplelogger.properties
??? slf4j-api-1.7.5.jar
??? slf4j-simple-1.7.5.jar
Run Code Online (Sandbox Code Playgroud)

Main.java如下:

package com.to;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {

    final static Logger logger = LoggerFactory.getLogger(Main.class);

    public static void main(String[] args) {
        logger.info("error {}", logger.isErrorEnabled());
        logger.info("info {}", logger.isInfoEnabled());
        logger.info("debug {}", logger.isDebugEnabled());
    }

}
Run Code Online (Sandbox Code Playgroud)

simplelogger.properties更改如下:

org.slf4j.simpleLogger.defaultLog=error
Run Code Online (Sandbox Code Playgroud)

运行测试,输出显示默认日志级别根本没有更改.

$ java -cp .:slf4j-api-1.7.5.jar:slf4j-simple-1.7.5.jar com.to.Main

[main] INFO com.to.Main - error true
[main] INFO com.to.Main - info true
[main] INFO com.to.Main - debug false
Run Code Online (Sandbox Code Playgroud)

即使系统属性在下面更改,也会发生同样的问题, …

logging slf4j

2
推荐指数
1
解决办法
4324
查看次数

malf和slf4j simplelogger的属性

我跑的时候不明白一些行为:

mvn -V clean -Dorg.slf4j.simpleLogger.showThreadName=true
Run Code Online (Sandbox Code Playgroud)

我明白了:

Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12- 14T18:29:23+01:00)
Java version: 1.8.0_31, vendor: Oracle Corporation
...
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

因此,看起来org.slf4j.simpleLogger.showThreadNameslf4j无法识别属性

当我改变这个属性时,conf/logging/simplelogger.properties我得到:

Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T18:29:23+01:00)
Java version: 1.8.0_31, vendor: Oracle Corporation
...
[main] [INFO] Scanning for projects...
[main] [INFO] ------------------------------------------------------------------------ 
Run Code Online (Sandbox Code Playgroud)

现在我有了我的期望.

mvn help:system -Dorg.slf4j.simpleLogger.showThreadName=true说财产已经确定.

我做错了什么?

我想用cli来设置sl4j的属性.我不想改变maven内部配置文件.

logging slf4j maven

2
推荐指数
1
解决办法
993
查看次数

没有找到类"org.slf4j.LoggerFactory

我收到了错误Caused by "java.lang.ClassNotFoundException: Didn't find class "org.slf4j.LoggerFactory".我附上了 slf4j-android-1.5.8.jarlib.但我不知道什么是问题.请帮忙

java eclipse android nfc slf4j

2
推荐指数
1
解决办法
1983
查看次数