cancel
Showing results for 
Search instead for 
Did you mean: 

Logging in Share Web Scripts

cyberheap
Champ in-the-making
Champ in-the-making
Hi!

I am trying to enable logging (logger root object) from in Web Scripts.

So far I have tried this:
log4j.logger.org.alfresco.repo.jscript.ScriptLogger=debug
… in Share's log4j.properties

and this:
<autowire>
            <!– Pick the runtime: classpath, webapp, local, alfresco –>              
            <runtime>alfresco</runtime>
           
            <!– Pick the mode: development, production –>            
            <mode>development</mode>
         </autowire>

… Share's surf.xml

This is the exception stack, after I try to do some logging from the slingshot-login.js script:

09:33:32,706 http-8080-1 ERROR [surf.render.RenderService] Unable to process template: slingshot-login
09:33:32,765 http-8080-1 ERROR [extensions.surf.FrameworkUtil] An exception occurred while rendering a page: slingshot-login
09:33:32,766 http-8080-1 ERROR [extensions.surf.FrameworkUtil] org.springframework.extensions.surf.exception.RendererExecutionException: 10180001 Failed to load script 'classpath*:alfresco/templates/org/alfresco/global/slingshot-login.js': 10180000 ReferenceError: "logger" is not defined. (file:/[OMITED]/tomcat/webapps/share/WEB-INF/classes/alfresco/templates/org/alfresco/global/slingshot-login.js#9)
   at org.springframework.extensions.webscripts.WebTemplateProcessor.executeBody(WebTemplateProcessor.java:270)
   at org.springframework.extensions.surf.render.AbstractProcessor.execute(AbstractProcessor.java:79)
   at org.springframework.extensions.surf.render.RenderService.processTemplate(RenderService.java:581)
   at org.springframework.extensions.surf.render.bean.TemplateInstanceRenderer.calculateComponentDependencies(TemplateInstanceRenderer.java:69)
   at org.springframework.extensions.surf.render.bean.TemplateInstanceRenderer.body(TemplateInstanceRenderer.java:126)
   at org.springframework.extensions.surf.render.AbstractRenderer.render(AbstractRenderer.java:135)
   at org.springframework.extensions.surf.render.bean.PageRenderer.body(PageRenderer.java:70)
   at org.springframework.extensions.surf.render.AbstractRenderer.render(AbstractRenderer.java:135)
   at org.springframework.extensions.surf.render.RenderService.startPageRenderer(RenderService.java:633)
   at org.springframework.extensions.surf.render.RenderService.renderPage(RenderService.java:610)
   at org.springframework.extensions.surf.render.PresentationUtil.renderPage(PresentationUtil.java:74)
   at org.springframework.extensions.surf.mvc.PageView.dispatchPage(PageView.java:358)
   at org.springframework.extensions.surf.mvc.PageView.renderView(PageView.java:240)
   at org.springframework.extensions.surf.mvc.AbstractWebFrameworkView.renderMergedOutputModel(AbstractWebFrameworkView.java:167)
   at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
   at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1060)
   at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798)
   at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
   at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
   at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.alfresco.web.site.servlet.MTAuthenticationFilter.doFilter(MTAuthenticationFilter.java:74)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.alfresco.web.site.servlet.SSOAuthenticationFilter.doFilter(SSOAuthenticationFilter.java:301)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
   at java.lang.Thread.run(Thread.java:637)
Caused by: org.springframework.extensions.webscripts.WebScriptException: 10180001 Failed to load script 'classpath*:alfresco/templates/org/alfresco/global/slingshot-login.js': 10180000 ReferenceError: "logger" is not defined. (file:/[OMITED]/tomcat/webapps/share/WEB-INF/classes/alfresco/templates/org/alfresco/global/slingshot-login.js#9)
   at org.springframework.extensions.webscripts.processor.JSScriptProcessor.executeScript(JSScriptProcessor.java:195)
   at org.springframework.extensions.webscripts.WebTemplateProcessor.executeBody(WebTemplateProcessor.java:266)
   … 39 more
Caused by: org.springframework.extensions.webscripts.WebScriptException: 10180000 ReferenceError: "logger" is not defined. (file:/[OMITED]/tomcat/webapps/share/WEB-INF/classes/alfresco/templates/org/alfresco/global/slingshot-login.js#9)
   at org.springframework.extensions.webscripts.processor.JSScriptProcessor.executeScriptImpl(JSScriptProcessor.java:323)
   at org.springframework.extensions.webscripts.processor.JSScriptProcessor.executeScript(JSScriptProcessor.java:191)
   … 40 more
Caused by: org.mozilla.javascript.EcmaError: ReferenceError: "logger" is not defined. (file:/[OMITED]/tomcat/webapps/share/WEB-INF/classes/alfresco/templates/org/alfresco/global/slingshot-login.js#9)
   at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3350)
   at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3340)
   at org.mozilla.javascript.ScriptRuntime.notFoundError(ScriptRuntime.java:3413)
   at org.mozilla.javascript.ScriptRuntime.name(ScriptRuntime.java:1612)
   at org.mozilla.javascript.gen.c1._c0(file:/[OMITED]/tomcat/webapps/share/WEB-INF/classes/alfresco/templates/org/alfresco/global/slingshot-login.js:9)
   at org.mozilla.javascript.gen.c1.call(file:/[OMITED]/tomcat/webapps/share/WEB-INF/classes/alfresco/templates/org/alfresco/global/slingshot-login.js)
   at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:393)
   at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2834)
   at org.mozilla.javascript.gen.c1.call(file:/[OMITED]/tomcat/webapps/share/WEB-INF/classes/alfresco/templates/org/alfresco/global/slingshot-login.js)
   at org.mozilla.javascript.gen.c1.exec(file:/[OMITED]/tomcat/webapps/share/WEB-INF/classes/alfresco/templates/org/alfresco/global/slingshot-login.js)
   at org.springframework.extensions.webscripts.processor.JSScriptProcessor.executeScriptImpl(JSScriptProcessor.java:313)
   … 41 more

Help!?
3 REPLIES 3

cyberheap
Champ in-the-making
Champ in-the-making
OK, I see that this script is actually in the /templates folder, not in web-scripts. I missed that one…

Probably this is the problem? Any way to get the logger going in js's from the /templates dir?

kevinr
Star Contributor
Star Contributor
The .js scripts for Templates are not the same as WebScript JavaScript. They have limited functional support and should be thought of as just simple controller scripts for template - not fully fledged webscripts. They do not have the usual objects available such as logger etc.

It can be done however, I assume you are using 3.3, if so you can spring in those additional beans to make them accessible to template controller scripts. In your custom-slingshot-application-context.xml add this block:

   <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>

That will add the logger.

Kev

cyberheap
Champ in-the-making
Champ in-the-making
Thanks!