如何忽略从 LDAP 错误中删除的 Liferay 用户?

How to ignore Liferay user removed from LDAP errors?

我有一个连接到 LDAP 的 Liferay 6.1 实例。新用户可以很好地导入,但是当我从 LDAP 目录中删除用户时,Liferay 在尝试从 LDAP 同步用户时开始抛出异常。

忽略这些似乎是安全的,但它们会产生几兆字节的日志,这使得日志解析非常烦人。我也认为这可能会影响性能。如果已删除的用户登录,他们什么也看不到。

16:13:54,422 ERROR [liferay/scheduler_dispatch-790][PortalLDAPImporterImpl:995] LDAP user not found with fullUserDN cn=foobar,ou=people,o=foo,dc=bar,dc=baz
javax.naming.NameNotFoundException: [LDAP: error code 32 - No Such Object]; remaining name 'cn=foobar,ou=people,o=foo,dc=bar,dc=baz'
    at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3057)
    at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2978)
    ... etc

我怎样才能让 Liferay 相信这真的没问题?或者还有什么我应该做的吗?

在 Liferay 支持 LDAP 中丢失的用户之前,您可以关闭此特定消息的日志记录。只需创建包含以下内容的文件 ROOT.war/WEB-INF/classes/META-INF/portal-log4j-ext.xml

<?xml version="1.0">
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <!-- Copy all appenders from 
         ROOT.war/WEB-INF/lib/portal-impl.jar/META-INF/portal-log4j.xml
         and add the following filter: -->
    <appender ...>
        ...
        <filter class="org.apache.log4j.filter.StringMatchFilter">
            <param name="StringToMatch" value="LDAP user not found with fullUserDN" />
            <param name="AcceptOnMatch" value="false" />
         </filter>
    </appender>

    <!-- Keep the root definition from portal-log4j.xml 
         to trigger the parsing of the appenders: -->
    <root>
        <priority value="INFO" />
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>
</log4j:configuration>

您可以在 Liferay Wiki 找到更多关于登录的信息。