5

我正在尝试在与 Alfresco 中的模板页面相对应的 javascript 文件中使用 logger.log("Hello") 。

我设置了以下内容: - 在 custom-log4j.properties 中(覆盖 log4j.properties)

log4j.appender.File=org.apache.log4j.DailyRollingFileAppender
log4j.appender.File.File=alfresco.log
log4j.appender.File.Append=true
log4j.appender.File.DatePattern='.'yyyy-MM-dd
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c] %m%n

log4j.logger.org.alfresco.repo.web.scripts=warn
log4j.logger.org.alfresco.repo.web.scripts.BaseWebScriptTest=info
log4j.logger.org.alfresco.repo.web.scripts.AlfrescoRhinoScriptDebugger=off
log4j.logger.org.alfresco.repo.jscript=debug
log4j.logger.org.alfresco.repo.jscript.ScriptLogger=debug
log4j.logger.org.alfresco.repo.cmis.rest.CMISTest=info

但是当我在 js 文件中使用 logger.log 时,我得到 logger 没有定义。

解决方案是在 custom-slingshot-application-context.xml 中设置以下内容

<bean id="webframework.rendition.processor.webtemplate" class="org.springframework.extensions.webscripts.WebTemplateProcessor">
      <property name="templateProcessorRegistry" ref="webframework.templates.registry.templateprocessor" />
      <property name="scriptProcessorRegistry"   ref="webframework.templates.registry.scriptprocessor" />
      <property name="processorModelHelper"      ref="processor.model.helper"></property>
      <property name="webFrameworkConfigElement" ref="webframework.config.element"></property>
      <property name="scriptObjects">
         <map>
            <entry key="remote" value-ref="webframework.webscripts.scriptremote" />
            <entry key="stringUtils">
               <bean class="org.springframework.extensions.webscripts.ScriptableUtils"/>
            </entry>
            <entry key="logger">
               <bean class="org.springframework.extensions.webscripts.ScriptLogger"/>
            </entry>
         </map>
      </property>
   </bean>

现在使用 logger.log 不会给出任何错误,但它似乎没有写入位于 Tomcat/bin 中的 alfresco.log

有人有线索吗?

4

2 回答 2

14

看起来您对适用于存储库的内容和适用于共享的内容感到困惑。

在存储库中

logger.log在调试级别使用类别org.alfresco.repo.jscript.ScriptLogger,因此您所拥有的custom-log4j.properties内容是正确的(尽管附加程序被忽略)。确保它位于类路径中alfresco/extension。该目录tomcat/shared/classes/alfresco/extension是您通常想要的。

分享

logger.log使用类别org.springframework.extensions.webscripts.ScriptLogger。据我记得,那里没有可用的“custom-log4j 属性配置机制”,所以你必须追加

log4j.logger.org.springframework.extensions.webscripts.ScriptLogger=debug

share/WEB-INF/classes/log4j.properties.

于 2013-09-19T09:43:12.753 回答
8

如果您不想重新启动 alfresco 并在存储库中执行脚本,还有另一种解决方法。尝试使用 logger.system.out 而不是 logger.log,您仍然会在 catalina.out 中找到日志记录消息。

于 2015-03-26T17:49:13.217 回答