如何为 share-amp 配置 log4j

How to configure `log4j` for `share-amp`

我正在使用 share-amp-archetype 尝试为我的模块设置 log4j,我必须将 log4j.properties 放在哪里?

我在 src/main/amp/config/alfresco/{moduleId} 中尝试过,但似乎不起作用。

当在我的 javascript webscript 控制器中写入 logger.log("I´m here!") 时,没有任何记录,相反 logger.warn("I´m here!") 工作正常。

在我的来源中,我的文件是 (src/main/amp/config/alfresco/{moduleId})

log4j.logger.org.springframework.extensions.webscripts=info
log4j.logger.org.springframework.extensions.webscripts.ScriptLogger=debug
log4j.logger.org.springframework.extensions.webscripts.ScriptDebugger=off

/src/test/resources/log4j.properties

...
log4j.logger.org.springframework.extensions.webscripts=info
log4j.logger.org.springframework.extensions.webscripts.ScriptLogger=debug
log4j.logger.org.springframework.extensions.webscripts.ScriptDebugger=off
...

注意:在 /target 中搜索 lo4j.properties 我可以看到 5 个文件!!

target\test-classes\lo4j.properties
target\test-classes\alfresco\module\{moduleId}\lo4j.properties
target\{moduleId}-war\WEB-INF\classes\lo4j.properties
target\{moduleId}-war\WEB-INF\classes\alfresco\module\share-asesorPlus\lo4j.properties
target\{moduleId}\config\alfresco\module\{moduleId}\lo4j.properties

您提到的位置似乎取自 Alfresco Repository extensions - logging guide,而不是 Alfresco Share 扩展部分,这就是它们不起作用的原因

据我所知 check/remember,Share 实际上没有(开箱即用)定义 extensions/modules log4j 文件加载的上下文文件。

因此,您首先需要将上下文文件添加到您的模块中,内容如下:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
  <bean id="log4JHierarchyInit" class="org.alfresco.repo.admin.Log4JHierarchyInit" init-method="init">
     <property name="extraLog4jUrls">
         <list>
           <value>classpath*:alfresco/module/*/log4j.properties</value>
         </list>
     </property>
   </bean>
</beans>

将其弹出到您的 amp 中适当命名的上下文文件中,然后您可以在 config/alfresco/{moduleId}/ 下创建一个 log4j 属性文件并使用它

(该片段取自 Alfresco Repository war 配置,它确实支持模块 log4j 文件作为标准。您需要引入类似的 bean 定义才能在 Share 中启用它)