首页 > 解决方案 > Liferay DXP JSF portlet 登录自定义文件和位置

问题描述

JSF portlet 的类是 GenericFacesPortlet(这意味着不是 MVCPortlet)并且使用了 slf4j。我尝试了资源/META-INF/portlet-log4j.xml(使用 dtd),但我无法实现登录自定义文件和位置。

任何提示都将不胜感激,例如使用 GenericFacesPortlet 的运行示例。Liferay 补丁级别为 7.1.10.fp14

我想记录一个类别(组件中的自定义 AuditLog 类,使用 slf4j 并由多个 portlet 使用),例如 liferay/logs/auditlog 或 liferay/tomcat/logs/auditlog

portlet 在 osgi 中注册并知道(该组件只是一个 jar 依赖 atm)

代码:

org.slf4j.Logger _logger = org.slf4j.LoggerFacytory.getLogger(Classname)
_logger.info("hello world");

更新

我不会将此作为答案发布,因为对我来说将文件添加到 ROOT 只是一种解决方法。

使用tomcat/webapps/ROOT/WEB-INF/classes/META-INF/portal-log4j-ext.xml作品。

在 tomcat/logs 下的自定义目录中的自定义文件附加程序。

<?xml version="1.0"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

<appender name="myAppender" class="org.apache.log4j.rolling.RollingFileAppender">
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
        <param name="FileNamePattern" value="${catalina.base}/logs/my-custom-location/my-custom-logfile.%d{yyyy-MM-dd}.log.zip" />
        <param name="ActiveFileName" value="${catalina.base}/logs/my-custom-location/my-custom-logfile.log" />
    </rollingPolicy>

    <layout class="org.apache.log4j.EnhancedPatternLayout">
        <param name="ConversionPattern" value="%d{yyyy/MM/dd HH\:mm\:ss} %-5p [%t][%c{1}:%L] %m%n" />
    </layout>
</appender>

<logger name="my.custom.package">
    <level value="INFO" />
    <appender-ref ref="myAppender" />
</logger>

</log4j:configuration>

标签: loggingliferayliferay-7

解决方案


前几天我尝试了这个并且能够使其与路径 src/main/webapp/META-INF/module-log4j-ext.xml 而不是 src/main/resources/META-INF/module-log4j-ext 一起使用.xml

这是一个例子:

<?xml version="1.0"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <category name="com.liferay.faces.demos.applicant.alloy.facelets.mbf">
        <priority value="DEBUG" />
    </category>
</log4j:configuration>

推荐阅读