问题描述
我正在尝试在与 Alfresco 中的模板页面相对应的 javascript 文件中使用 logger.log("Hello").
我设置了以下内容:- 在自定义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
有人知道吗?
推荐答案
看起来您对适用于存储库的内容和适用于共享的内容感到困惑.
在存储库中:
logger.log 在级别调试时使用类别 org.alfresco.repo.jscript.ScriptLogger,所以 custom-log4j.properties 中的内容是正确的(尽管 appender 被忽略).确保它位于 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.
其他推荐答案
如果您不想在 alfresco 中重新启动并在存储库中执行您的脚本,则还有另一种解决方案.尝试使用 logger.system.out 而非 logger.log,您仍然会在 catalina.out 中找到日志消息.
问题描述
I am trying to use logger.log("Hello") in a javascript file corresponding to a template page in Alfresco.
I have set the following: - in custom-log4j.properties (overriding 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
But when I use logger.log in the js file, I get logger is not defined.
The solution was to set the following in 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>
Now using logger.log does not give any error, but it seems that it's not writing to alfresco.log which is located in Tomcat/bin
Does anybody have a clue?
推荐答案
Looks like you got confused with what applies to the repository and what applies to share.
In the repository:
logger.log uses the category org.alfresco.repo.jscript.ScriptLogger at level debug, so what you have in custom-log4j.properties is correct (the appender is ignored though). Make sure it is in the classpath at alfresco/extension. The directory tomcat/shared/classes/alfresco/extension is what you usually want.
In share:
logger.log uses the category org.springframework.extensions.webscripts.ScriptLogger. As far as I remember, there is no "custom-log4j property configuration mechanism" available there, so you'll have to append
log4j.logger.org.springframework.extensions.webscripts.ScriptLogger=debug
to share/WEB-INF/classes/log4j.properties.
其他推荐答案
If you don't want to restart alfresco and execute your script in repository, there is another way as work-around solution. Try to use logger.system.out other than logger.log and you will still find the logging message in catalina.out.