当前位置: 首页 > 面试题库 >

登录时,Jboss上的登录会重复前缀和换行

秦鹏飞
2023-03-14
问题内容

我正在研究Java Web项目。我使用Wildfly10。我想将其与logback一起使用。我做了一些配置:

pom.xml

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.24</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.1</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.2.1</version>
</dependency>

logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender" >
        <encoder>
            <pattern>[%date] [%thread] [%-5level] [%logger{36}] - %msg%n </pattern>
        </encoder>
    </appender>

    <logger name="com.pr" level="debug" additivity="false">
        <appender-ref ref="STDOUT" />
    </logger>

  <root level="debug">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

jboss-deployment-structure.xml

<jboss-deployment-structure>
    <deployment>
        <exclude-subsystems>
            <subsystem name="logging" />
        </exclude-subsystems>
</deployment>
</jboss-deployment-structure>

问题是我期望输出如下:

[2017-02-26 12:32:23,671] [ServerService线程池-179] [调试]
[o.springframework.jndi.JndiTemplate]-查找JNDI

但是我得到了:

12:32:23,671信息[stdout](ServerService线程池-179)[2017-02-26 12:32:23,671]
[ServerService线程池-179] [DEBUG] [o.springframework.jndi.JndiTemplate]-查找JNDI

因此,看起来jboss在一开始就添加了一些东西。如何预防呢?


问题答案:

WildFly将两者包装在一起System.outSystem.err记录在记录器中。如果要使用写入流中的附加程序或处理程序,则需要使用java.io.FileDescriptor.out(或err),或者需要为stdout或创建新的记录器类别,stderr以及为console- handler分配给记录器的新记录。

/subsystem=logging/pattern-formatter=stdout:add(pattern="%s%n")
/subsystem=logging/console-handler=stdout:add(autoflush=true, target=System.out, named-formatter=stdout, level=ALL)
/subsystem=logging/logger=stdout:add(use-parent-handlers=false, handlers=[stdout], level=ALL)

上面的CLI脚本应从记录器中删除默认模式stdout

standalone.xml中的相应表示形式如下所示:

<console-handler name="stdout" autoflush="true">
  <level name="ALL"/>
  <formatter>
    <pattern-formatter pattern="%s%n"/>
  </formatter>
</console-handler>
<logger category="stdout" use-parent-handlers="false">
  <level name="ALL"/>
  <handlers>
    <handler name="stdout"/>
  </handlers>
</logger>


 类似资料:
  • 我正在做java web项目。我用野花10。我想和logback一起使用。我做了一些配置: pom.xml logback.xml jboss-deployment-structure.xml 问题是我期待这样的输出: [2017-02-26 12:32:23,671][ServerService线程池--179][DEBUG][o.springframework.jndi.JndiTemplat

  • 我的应用程序看起来像: 如果用户访问 /game下的页面并且没有登录,我想将他们重定向到登录页面。 如何在所有路由器中以优雅的方式进行?

  • 容器在分派请求到 servlet引擎之前建立调用者身份。在整个请求处理过程中或直到应用成功的在请求上调用身份认证、登录或退出,调用者身份保持不变。对于异步请求,调用者身份建立在初始分派时,直到整个请求处理完成或直到应用成功的在请求上调用身份认证、登录或退出,调用者身份保持不变。 在处理请求时登录到一个应用,精确地对应有一个有效的非空的与请求关联的调用者身份,可以通过调用请求的 getRemoteU

  • 问题内容: 我的应用看起来像: 如果用户访问/ game下的页面并没有登录,我想将他们重定向到登录页面。 如何在所有路由器中做到优雅? 问题答案: 基本思想是使用自定义组件(在下面的示例中为PrivateRoute)包装需要身份验证的路由。PrivateRoute将使用某种逻辑来确定用户是否已通过身份验证,然后确定是否通过身份验证。允许请求的路由呈现或重定向到登录页面。 在react-router

  • 问题内容: JSON.NET框架可以将XML转换为JSON,但是它使用JSON中的@符号作为属性。我宁愿在将其发送到视图之前将其删除。最好的方法是什么? 我知道我可以直接进行替换,但是@字符可能与某个地方相关,因此不应替换。有正则表达式吗? 问题答案: 我花了很长时间才找到正确的答案,所以我想分享一下: 输出:

  • 记录器文件中的日志- org.springframework.Security.Access.event.loggerlistener-安全授权失败,原因是:org.springframework.Security.Access.accessdeniedexception:访问被拒绝;通过身份验证的主体:org.springframework.security.authentication.ano