我已经以域模式格式配置了我的WildFly 18服务器,我们使用log4j记录器。当我签入服务器时。日志文件,所有来自log4j的日志都以wildfly自己的日志格式记录。如下面第1行所示,第一个日期和日志级别来自服务器日志,下一个日期格式和日志级别以及日志消息来自log4j。
2021-03-19 00:13:06,623 INFO 2021-03-19 00:13:06,601 INFO [com.app.connection.service] CurrentThreadID=436 On
我搜索了很多...我发现了很多与独立模式相关的配置,有些人说这些配置可以在domain.xml中完成,但都不起作用
我在域中有以下配置。xml
<subsystem xmlns="urn:jboss:domain:logging:8.0">
<custom-handler name="CUSTOM-FILE" class="org.jboss.logmanager.handlers.PeriodicSizeRotatingFileHandler" module="org.jboss.logmanager">
<formatter>
<named-formatter name="MY-PATTERN"/>
</formatter>
<properties>
<property name="maxBackupIndex" value="24"/>
<property name="rotateSize" value="10000000"/>
<property name="suffix" value=".yyyy-MM-dd-HH"/>
<property name="append" value="true"/>
<property name="fileName" value="${jboss.server.log.dir}/server.log"/>
</properties>
</custom-handler>
<logger category="com.arjuna">
<level name="WARN"/>
</logger>
<logger category="io.jaegertracing.Configuration">
<level name="WARN"/>
</logger>
<logger category="org.jboss.as.config">
<level name="DEBUG"/>
</logger>
<logger category="sun.rmi">
<level name="WARN"/>
</logger>
<root-logger>
<level name="INFO"/>
<handlers>
<handler name="CUSTOM-FILE"/>
</handlers>
</root-logger>
<formatter name="PATTERN">
<pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %s%e%n"/>
</formatter>
<formatter name="MY-PATTERN">
<pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %s%e%n"/>
</formatter>
<formatter name="COLOR-PATTERN">
<pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p %s%e%n"/>
</formatter>
</subsystem>
在log4j.xml,我有一个控制台appender如下所示,这log4j.xml出现在模块目录中路径Wildfly18.0.1\模块\org\apache\log\log4j\main\log4j2-props
<Console name="Console">
<PatternLayout pattern="%d %-5p [%c] %m\n" />
</Console>
以下是我尝试过的事情:
>
在日志记录子系统中添加了标记
<add-logging-api-dependencies value="false"/>
<use-deployment-logging-config value="false"/>
添加了记录器
<logger category="stdout" use-parent-handlers="false">
<level name="INFO"/>
<handlers>
<handler name="CUSTOM-FILE"/>
</handlers>
</logger>
我们使用EAR部署文件
<deployment>
<exclude-subsystems>
<subsystem name="logging"/>
</exclude-subsystems>
<exclusions>
<module name="org.apache.commons.logging"/>
<module name="org.apache.log4j"/>
<module name="org.jboss.logging"/>
<module name="org.jboss.logging.jul-to-slf4j-stub"/>
<module name="org.jboss.logmanager"/>
<module name="org.jboss.logmanager.log4j"/>
<module name="org.slf4j"/>
<module name="org.slf4j.impl"/>
</exclusions>
</deployment>
那么,有人能帮我正确配置域模式设置吗?
提前感谢。。。
正如许多其他评论中所述,Jboss添加了自己的模式,并处理应用程序log4j2的模式。xml作为其自身模式的“消息”。要解决此问题,请向Jboss Standalone的日志记录子系统添加以下内容。xml
<subsystem xmlns="urn:jboss:domain:logging:8.0">
....
<console-handler name="stdout-console" autoflush="true">
<level name="ALL"/>
<formatter>
<pattern-formatter pattern="%s%n"/>
</formatter>
</console-handler>
<logger category="stdout" use-parent-handlers="false">
<handlers>
<handler name="stdout-console"/>
</handlers>
</logger>
....
</subsystem>
这将导致Jboss的默认日志模式被覆盖,您的日志将包含您在控制台附加程序中配置log4j2.xml内容。
我不确定这是一个选项,但WildFly 22支持log4j2,因此您可以使用WildFly配置日志记录,无需包含log4j2.xml.
似乎要将标准输出重定向到文件。如果希望log4j2配置控制格式,则需要更改MY-FORMATTER的格式。下面是一些用于配置服务器的CLI命令。
# Add the pattern for the stdout logger
/subsystem=logging/pattern-formatter=MY-PATTERN:add(pattern="%s%n")
# Create a file to direct stdout to
/subsystem=logging/periodic-size-rotating-file-handler=CUSTOM-FILE:add(named-formatter=MY-PATTERN, max-backup-index=24, rotate-size="10m", suffix=".yyyy-MM-dd-HH", append=true, file={relative-to=jboss.server.log.dir, path=server-stdout.log})
# Create the stdout logger, direct it to the file only
/subsystem=logging/logger=stdout:add(handlers=[CUSTOM-FILE], use-parent-handlers=false)
注意,我将日志文件重命名为服务器stdout。记录日志,以免覆盖默认服务器。日志。原因是服务器本身将记录到此文件,如果使用该模式覆盖它,则不会格式化服务器本身的日志。
还要注意,写入系统的任何内容。out将以服务器stout结束。还要记录。
我知道有很多关于这个的问题,但是我确实经历了所有的问题,并且有点困惑自己,我列出了我遵循的步骤,请让我知道我把它搞砸了。 1) 我只想在应用程序级别使用Log4j,所以需要复制WL_HOME/server/lib/wllog4j。jar和log4j。jar在Domail_Home/Lib? 2) 我使用的是Maven,我在pom中添加了Log4j依赖项。xml[war]。我把战争藏在耳朵里。 3)
我想在我的应用程序中使用SLF4J+logback用于两个目的--日志和审计。 14:41:57.978[main]信息AUDIT_LOGGER-110欢迎使用main 如何确保审核消息在审核记录器下只出现一次?
我刚刚为我们的微服务环境在前端创建了简单的Zuul代理,但现在我想将所有条目记录到通过代理的日志文件中。 做任何我需要做的事情。
主要内容:Logger日志方法的例子,Logger的日志方法Logger 类有多种方法来处理日志记录活动。Logger 类不允许我们实例化一个新的 Logger 实例,但它支持两种获取 Logger 对象的静态方法: 两个方法中的第一个返回应用程序实例的根记录器,它没有名称。 任何其他命名的 Logger 对象实例都是通过传递记录器的名称由第二种方法获得的。记录器的名称可以是您传递的任何字符串,通常是类或包名称,如下所述: Logger日志方法的例子 Lo
当前的日志阈值是关于日志级别(TRACE,DEBUG,INFO,WARN,ERROR和FATAL)对我来说是不够的。我有一个千兆字节的日志从第三方库写入紧急情况下的错误类别。我不想打开这个日志,因为我想看到这个问题日志。大多数日志都是连续重复的堆栈跟踪。所以我想要一种可以 1)跳过日志,如果阈值(kb/sec)是真实的(我的意思是当我们写很多日志-我们可能会跳过一些)或 2)如果在一段时间内打印了
问题内容: 我对如何将日志条目直接放入(而不是logstash)感到有些困惑。到目前为止,我发现了一些附加目的地(,等等),允许将日志发送到远程主机,也可能这似乎让我们日志转换为“弹性友好”的格式,但这种方法看起来古怪......还是我错误?这是将日志发送到的一种方法吗? 到目前为止,我有这样的配置: 但是我得到一个错误: 我找不到任何有用的示例,所以我无法理解我该怎么做以及如何解决。谢谢。 问题