簡體   English   中英

為什么我沒有從Spring Security獲取日志?

[英]Why am I not getting logging from Spring Security?

我正在嘗試測試放置在我的Spring Controller中的方法上的@PreAuthorize標記。 關於Spring是否允許或禁止呼叫的決定,我沒有得到任何日志信息。 目前,我被允許使用一種方法,並且我想調試為什么即使沒有角色也可以被允許使用。

我正在使用Spring Framework 3.2.3,Spring Security 3.1.4,Logback 1.0.13,Logback Spring 0.1.1。

這是我的登錄文件:

...
<appender name="MAIN" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>/logs/main_log.txt</file>
  <append>true</append>
  <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
     <level>TRACE</level>
  </filter>
  <encoder>
     <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} | %p | %c %M | %m%n</pattern>
  </encoder>
  <rollingPolicy>
     <fileNamePattern>/logs/main_log.txt.%d</fileNamePattern>
  </rollingPolicy>
</appender>

<logger name="org.springframework" level="TRACE"/>

<logger name="my.package" level="TRACE"/>

<root level="WARN">
   <appender-ref="MAIN"/>
</root>

我在web.xml文件中正確設置了偵聽器。 我知道這一點是因為我從軟件包my.package以及其他第三方軟件獲取警告消息。

關於如何查看@PreAuthorize注釋正在做出的決定的任何想法?

您的配置看起來不錯,但是不幸的是,Spring使用了commons日志記錄。 請遵循有關如何使用SLF4J(+ log4j或logback)的官方文檔。

http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/overview.html#overview-not-using-commons-logging

只是不要添加commons-logging jar,或者如果您使用Maven,請像文檔中所示排除它。 然后,您需要在commons-logging和SLF4J(jcl-over-slf4j.jar)之間建立橋梁。

從我的(工作)配置中刪除:

<logger name="org.springframework" level="DEBUG" additivity="false">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" />
</logger>

pom.xml中:

    <!-- Logging -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.5</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.7.5</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.0.13</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>1.0.13</version>
        <scope>runtime</scope>
    </dependency>
    <!-- Spring -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring-version}</version>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

為了使用Pre-PostAuthorize批注,必須在Spring配置中啟用它們,因為默認情況下它們處於關閉狀態。

這是在使用global-method-security XML元素時啟用這些注釋global-method-security (有關更多詳細信息,請參見此處 ):

<global-method-security pre-post-annotations="enabled"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM