www.91084.com

GVKun编程网logo

log4j:WARN在web.xml中找不到记录器的附加程序(log4jlogger 找不到)

9

本文将介绍log4j:WARN在web.xml中找不到记录器的附加程序的详细情况,特别是关于log4jlogger找不到的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,

本文将介绍log4j:WARN在web.xml中找不到记录器的附加程序的详细情况,特别是关于log4jlogger 找不到的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于Docker 容器内的 Log4j2 套接字附加程序抛出连接被拒绝、java – SLF4J-Log4j记录器没有记录、Java找不到记录器(log4j)的附加程序?、log4j 2向控制台附加程序添加多种颜色的知识。

本文目录一览:

log4j:WARN在web.xml中找不到记录器的附加程序(log4jlogger 找不到)

log4j:WARN在web.xml中找不到记录器的附加程序(log4jlogger 找不到)

我已经将log4jConfigLocation放在web.xml中,但是仍然收到以下警告:

log4j:WARN No appenders could be found for logger ⤦    ⤥ (org.springframework.web.context.ContextLoader).log4j:WARN Please initialize the log4j system properly.

我错过了什么?

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"     "java.sun.com/dtd/web-app_2_3.dtd"><web-app>    <context-param>        <param-name>contextConfigLocation</param-name>        <param-value>            /WEB-INF/applicationContext.xml        </param-value>    </context-param>    <context-param>        <param-name>log4jConfigLocation</param-name>        <param-value>/WEB-INF/classes/log4j.properties</param-value>    </context-param>    <listener>        <listener-class>            org.springframework.web.util.Log4jConfigListener        </listener-class>    </listener>    <listener>        <listener-class>            org.springframework.web.context.ContextLoaderListener        </listener-class>    </listener>    <servlet>        <servlet-name>suara2</servlet-name>        <servlet-class>            org.springframework.web.servlet.DispatcherServlet        </servlet-class>    </servlet>    <servlet-mapping>        <servlet-name>suara2</servlet-name>        <url-pattern>/*</url-pattern>    </servlet-mapping></web-app>

答案1

小编典典

如果这是整个log4j.properties文件,则看起来你实际上从未创建过记录器。你需要这样的一行:

log4j.rootLogger=debug,A1

Docker 容器内的 Log4j2 套接字附加程序抛出连接被拒绝

Docker 容器内的 Log4j2 套接字附加程序抛出连接被拒绝

如何解决Docker 容器内的 Log4j2 套接字附加程序抛出连接被拒绝?

我有一个在 docker 容器上运行的 springboot 应用程序。在我的应用程序中有一个带有套接字附加程序的 log4j.xml 文件。

defmodule Example do
  def merge_sort([]),do: []
  def merge_sort([_] = list),do: list

  def merge_sort(list) when is_list(list) do
    len = length(list)
    {a,b} = Enum.split(list,div(len,2))
    a = merge_sort(a)
    b = merge_sort(b)
    merge(a,b,[])
  end

  defp merge([],acc),do: Enum.reverse(acc) ++ b
  defp merge(a,[],do: Enum.reverse(acc) ++ a

  defp merge([a_head | a_tail] = a,[b_head | b_tail] = b,acc) do
    if a_head <= b_head do
      merge(a_tail,[a_head | acc])
    else
      merge(a,b_tail,[b_head | acc])
    end
  end
end

在我的主机服务器(Ubuntu 服务器)中,它通过 logstash 列出了端口 5100。主机中“netstat -tulpn”命令的输出如下。

<Socket name="Socket" host="172.17.0.1" port="5100">
    <JsonLayout compact="true" eventEol="true" />
</Socket>

但是当 springboot 服务器启动时,它的获取连接被拒绝错误。

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:8280            0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:5100          0.0.0.0:*               LISTEN      -

tcp        0      0 127.0.0.1:5001          0.0.0.0:*               LISTEN      -

我也尝试过“host.docker.internal”,但它不起作用。谁能告诉我这有什么问题吗?

解决方法

正如您从 netstat 输出中看到的,Logstash 仅监听 127.0.0.1:5100。这意味着它不能从 Docker 内部访问。您必须让它在 172.17.0.1:51000.0.0.0:5100 上收听。

java – SLF4J-Log4j记录器没有记录

java – SLF4J-Log4j记录器没有记录

我想第一次使用SLF4J-Log4j.在每个 Java类中,我都定义了一个这样的记录器:
private org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(<TheClass>.class);

(当然,我确保slf4-log4j12-1.6.4.jar JAR在类路径上!)

但每当我去使用记录器时,比如logger.debug(“有趣的事情发生了”);或者logger.error(“发生错误”);我在日志文件中看不到它们的输出.但是,没有异常发生,应用程序(它实际上是部署到Tomcat的WAR)运行正常.

这是项目中包含的log4j.properties文件:

# Set the root logger to DEBUG.
log4j.rootLogger=DEBUG

# MonitorLog - used to log messages in the Monitor.log file.
log4j.appender.MonitorAppender=org.apache.log4j.FileAppender
log4j.appender.MonitorAppender.File=${catalina.base}/logs/MyAppMonitor.log
log4j.appender.MonitorAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.MonitorAppender.layout.ConversionPattern= %-4r [%t] %-5p %c %x - %m%n

# Use the MonitorAppender to log all messages.
log4j.logger.*=DEBUG,MonitorAppender
org.quartz.impl.StdSchedulerFactory=DEBUG,MonitorAppender

这个WAR使用Quartz来完成一些工作,这就是你看到最后一个条目的原因.

当我检查Tomcat的logs /目录时,我看到创建了MyAppMonitor.log,但它没有任何内容(0字节).我已经扫描了所有典型的catalina.out,catalina-和localhost-日志,而且我的日志语句都没有看到日光.

我在想:

>我没有正确配置log4j.properties,或
>我没有正确配置slf4j-log4j,或者
>这是一个类路径问题,也许WAR找不到log4j.properties(虽然我想我会看到错误或警告),或者
>我没有正确使用(API本身)SLF4J,或者
>我从来没有真正创建过一个名为MonitorAppender的东西,所以我想知道这是不是问题;我只是按照我在网上看到的一个例子

任何人都可以找到我要去的地方,或者帮我排除故障吗?提前致谢!

解决方法

您的log4j.properties配置文件中包含许多错误.尝试使用以下简单的东西.
log4j.debug=true
log4j.rootLogger=DEBUG,CON

log4j.appender.CON=org.apache.log4j.ConsoleAppender
log4j.appender.CON.layout=org.apache.log4j.PatternLayout
log4j.appender.CON.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

对于您问题中的配置文件,根记录器没有附加的appender.而且,行

log4j.logger.*=DEBUG,MonitorAppender

无效,因为不支持“*”.

Java找不到记录器(log4j)的附加程序?

Java找不到记录器(log4j)的附加程序?

如何解决Java找不到记录器(log4j)的附加程序??

这个log4j指南的简短介绍有些陈旧,但仍然有效。

该指南将为你提供有关如何使用记录器和附加器的信息。

为了让你步入正轨,你可以采用两种简单的方法。

首先是将这一行添加到你的main方法中:

BasicConfigurator.configure();

第二种方法是将这个标准文件log4j.properties(来自上述指南)添加到你的类路径中:

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

解决方法

我已经将log4j放到了我的构建路径中,但是在运行应用程序时收到以下消息:

log4j:WARN No appenders could be found for logger (dao.hsqlmanager).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

这些警告是什么意思?这里的追加器是什么?

log4j 2向控制台附加程序添加多种颜色

log4j 2向控制台附加程序添加多种颜色

嗨,我刚刚下载并配置了log4j-2。我一直坚持将颜色代码应用于SlowConsole控制台附加程序。我的控制台附加程序如下所示。

<?xml version="1.0" encoding="UTF-8"?><Configuration status="WARN">    <Appenders>        <Console name="Console" target="SYSTEM_OUT">            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n"/>        </Console>        <Console name="SlowConsole" target="SYSTEM_OUT">            <PatternLayout pattern="%highlight{%d{HH:mm:ss.SSS} %-5level %logger{36}.%M() @%L - %msg%n}{FATAL=red, ERROR=red, WARN=yellow, INFO=black, DEBUG=green, TRACE=blue}"/>        </Console>        <File name="File" fileName="C:\log\out.txt">            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n" />        </File>    </Appenders>    <Loggers>        <logger name="org.abc.ea.web" level="ALL" additivity="false">            <!--Log4j for the WEB MODULE -->            <appender-ref ref="SlowConsole"/>        </logger>        <logger name="org.abc.ea.ejb" level="ALL" additivity="false">            <!--Log4j for the EJB MODULE -->            <appender-ref ref="SlowConsole"/>        </logger>        <Root level="ERROR">            <AppenderRef ref="Console"/>            <AppenderRef ref="File" />        </Root>    </Loggers></Configuration>

我有两个问题,

  1. 我是log4j的新手,这是编写xml配置文件的正确方法吗?

  2. 如何在每个日志级别添加两个颜色代码?

例如:DEBUG = green->将输出浅绿色字体,但是我需要它是dimbold

答案1

小编典典

我想我找到了解决方案。我下载了log4j2-core-
sources.jar并跟踪了源。您可以如下编写:

<Console name="SlowConsole" target="SYSTEM_OUT">     <PatternLayout disableAnsi="false"  pattern="%highlight{%d{HH:mm:ss.SSS} %-5level %logger{36}.%M() @%L - %msg%n}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=black, DEBUG=green bold, TRACE=blue}"/></Console>

我认为log4j2
文档及其示例可能需要更新。

关于log4j:WARN在web.xml中找不到记录器的附加程序log4jlogger 找不到的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Docker 容器内的 Log4j2 套接字附加程序抛出连接被拒绝、java – SLF4J-Log4j记录器没有记录、Java找不到记录器(log4j)的附加程序?、log4j 2向控制台附加程序添加多种颜色的相关信息,请在本站寻找。

本文标签: