cancel
Showing results for 
Search instead for 
Did you mean: 

logger.Debug does not work

john84
Champ in-the-making
Champ in-the-making
I've just started getting my first experience on Alfresco using the SDK after implementing a sample (Implementing custom behavior by Jeff Potts) I thought, to put some custom functionality to understand a little bit more about SDK and Java.

Well so quite simple I added custom log messages

I declared the logger:
private Logger logger = Logger.getLogger(Rating.class);

I called it from the sample code:
logger.info("My Custom Errormessage");
logger.warn("My Custom Errormessage");

But I couldn't see anything in the alfresco.log, as I tried .error instead it did work very well.
logger.error("My Custom Errormessage");

Anybody there who can explain this??

Thanks in Advance
Johannes
5 REPLIES 5

mikeh
Star Contributor
Star Contributor
Did you enable the appropriate log level in log4j.properties?

Mike

john84
Champ in-the-making
Champ in-the-making
Hi Mike,
I've to thank you, that's it.

I added one line pointing to  my namespace and it works fine

log4j.logger.com.sia.behavior.Rating=info

Tanks again.

bobtheknight
Champ in-the-making
Champ in-the-making
Hello,

I tried to implement a custom logger, where I log to a separate file.  I created a custom file dev-log4j.properties under C:\Alfresco\tomcat\webapps\alfresco\WEB-INF\classes\alfresco\extension

The content of the file is as follows:

####### Custom #########
log4j.logger.ca.someco.DevLogger=DEBUG, Dev
log4j.appender.Dev=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Dev.File=dev.log
log4j.appender.Dev.Append=true
log4j.appender.Dev.DatePattern='.'yyyy-MM-dd
log4j.appender.Dev.layout=org.apache.log4j.PatternLayout
log4j.appender.Dev.layout.ConversionPattern=%d{ABSOLUTE} %-5p Line:%l [%c] %m%n

The logger works as it should when I call logger.debug("message") in my code, however it also logs to the console and alfresco.log.  The log4j.properties file in alfresco is their default form.

Is there anyway for my code from the ca.someco.DevLogger class to just log to dev.log?

mrogers
Star Contributor
Star Contributor
Yes you can control which log levels go into which appender.

http://logging.apache.org/log4j/1.2/manual.html

bobtheknight
Champ in-the-making
Champ in-the-making
Thank you for your reply mrogers,

However I'm not trying to deal with log levels yet.  I am trying to make it so that all the logging done in my extension only goes to my custom appender, and does not go into alfresco.log or console.  I thought with the line:

log4j.logger.ca.someco.DevLogger=DEBUG, Dev

and the definition of appender Dev below it, all levels of log would go into the file assigned to Dev: dev.log, which it does.  Additionally I thought because log4j.logger.ca.someco.DevLogger is not defined in the main log4j.properties under C:\Alfresco\tomcat\webapps\alfresco\WEB-INF\classes\log4j.properties, it should not log to the default places: alfresco.log, and console. 

Despite that logic, my logs showed up on alfresco.log and console.  I'm wondering why.  Following is the log4j.properties I have under C:\Alfresco\tomcat\webapps\alfresco\WEB-INF\classes\log4j.properties; the content of dev-log4j.properties is in my previous post. 

# Set root logger level to error
log4j.rootLogger=error, Console, File

###### Console appender definition #######

# All outputs currently set to be a ConsoleAppender.
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout

# use log4j NDC to replace %x with tenant domain / username
log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %x %-5p [%c{3}] %m%n
#log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c] %m%n

###### File appender definition #######
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

###### Hibernate specific appender definition #######
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

###### Log level overrides #######

# Commented-in loggers will be exposed as JMX MBeans (refer to org.alfresco.repo.admin.Log4JHierarchyInit)
# Hence, generally useful loggers should be listed with at least ERROR level to allow simple runtime
# control of the level via a suitable JMX Console. Also, any other loggers can be added transiently via
# Log4j addLoggerMBean as long as the logger exists and has been loaded.

# Hibernate
log4j.logger.org.hibernate=error
log4j.logger.org.hibernate.util.JDBCExceptionReporter=fatal
log4j.logger.org.hibernate.event.def.AbstractFlushingEventListener=fatal
#log4j.logger.org.hibernate.cache.EhCacheProvider=warn
log4j.logger.org.hibernate.type=warn
#log4j.logger.org.hibernate.persister.collection=DEBUG

# Spring
log4j.logger.org.springframework=warn
# Turn off Spring remoting warnings that should really be info or debug.
log4j.logger.org.springframework.remoting.support=error
log4j.logger.org.springframework.util=error

# Axis/WSS4J
log4j.logger.org.apache.axis=info
log4j.logger.org.apache.ws=info

# CXF
log4j.logger.org.apache.cxf=error

# MyFaces
log4j.logger.org.apache.myfaces.util.DebugUtils=info
log4j.logger.org.apache.myfaces.el.VariableResolverImpl=error
log4j.logger.org.apache.myfaces.application.jsp.JspViewHandlerImpl=error
log4j.logger.org.apache.myfaces.taglib=error

# OpenOfficeConnection
log4j.logger.net.sf.jooreports.openoffice.connection=fatal

# log prepared statement cache activity ###
log4j.logger.org.hibernate.ps.PreparedStatementCache=info

# Alfresco
log4j.logger.org.alfresco=error
log4j.logger.org.alfresco.repo.admin=info
log4j.logger.org.alfresco.repo.model.filefolder=info
log4j.logger.org.alfresco.repo.tenant=info
log4j.logger.org.alfresco.repo.avm=info
log4j.logger.org.alfresco.config=info
log4j.logger.org.alfresco.sample=info
log4j.logger.org.alfresco.web=info
#log4j.logger.org.alfresco.web.app.AlfrescoNavigationHandler=debug
#log4j.logger.org.alfresco.web.ui.repo.component.UIActions=debug
#log4j.logger.org.alfresco.web.ui.repo.tag.PageTag=debug
#log4j.logger.org.alfresco.web.bean.clipboard=debug
log4j.logger.org.alfresco.repo.webservice=info
log4j.logger.org.alfresco.cmis.ws=info
log4j.logger.org.alfresco.service.descriptor.DescriptorService=info
log4j.logger.org.alfresco.heartbeat.HeartBeat=info
#log4j.logger.org.alfresco.web.page=debug

log4j.logger.org.alfresco.repo.importer.ImporterBootstrap=error
#log4j.logger.org.alfresco.repo.importer.ImporterBootstrap=info

log4j.logger.org.alfresco.web.ui.common.Utils=error
#log4j.logger.org.alfresco.web.ui.common.Utils=info

log4j.logger.org.alfresco.repo.admin.patch.PatchExecuter=info
log4j.logger.org.alfresco.repo.admin.patch.impl.DeploymentMigrationPatch=info
log4j.logger.org.alfresco.repo.version.VersionMigrator=info
log4j.logger.org.alfresco.repo.module.ModuleServiceImpl=info
log4j.logger.org.alfresco.repo.domain.schema.SchemaBootstrap=info
log4j.logger.org.alfresco.repo.admin.ConfigurationChecker=info
log4j.logger.org.alfresco.repo.node.index.IndexTransactionTracker=info
log4j.logger.org.alfresco.repo.node.index.FullIndexRecoveryComponent=info
log4j.logger.org.alfresco.repo.node.index.AVMFullIndexRecoveryComponent=info
log4j.logger.org.alfresco.util.OpenOfficeConnectionTester=info
log4j.logger.org.alfresco.repo.node.db.hibernate.HibernateNodeDaoServiceImpl=warn
log4j.logger.org.alfresco.repo.domain.hibernate.DirtySessionMethodInterceptor=warn
log4j.logger.org.alfresco.repo.transaction.RetryingTransactionHelper=warn

#log4j.logger.org.alfresco.web.app.DebugPhaseListener=debug
#log4j.logger.org.alfresco.repo.cache.EhCacheTracerJob=debug

log4j.logger.org.alfresco.repo.workflow=error
#log4j.logger.org.alfresco.repo.workflow=info

# CIFS server debugging
log4j.logger.org.alfresco.smb.protocol=error
#log4j.logger.org.alfresco.smb.protocol.auth=debug
#log4j.logger.org.alfresco.acegi=debug

# FTP server debugging
log4j.logger.org.alfresco.ftp.protocol=error
#log4j.logger.org.alfresco.ftp.server=debug

# WebDAV debugging
#log4j.logger.org.alfresco.webdav.protocol=debug
log4j.logger.org.alfresco.webdav.protocol=error

# NTLM servlet filters
#log4j.logger.org.alfresco.web.app.servlet.NTLMAuthenticationFilter=debug
#log4j.logger.org.alfresco.repo.webdav.auth.NTLMAuthenticationFilter=debug

# Kerberos servlet filters
#log4j.logger.org.alfresco.web.app.servlet.KerberosAuthenticationFilter=debug
#log4j.logger.org.alfresco.repo.webdav.auth.KerberosAuthenticationFilter=debug

# Integrity message threshold - if 'failOnViolation' is off, then WARNINGS are generated
log4j.logger.org.alfresco.repo.node.integrity=ERROR

# Indexer debugging
log4j.logger.org.alfresco.repo.search.Indexer=error
#log4j.logger.org.alfresco.repo.search.Indexer=debug

log4j.logger.org.alfresco.repo.search.impl.lucene.index=error
#log4j.logger.org.alfresco.repo.search.impl.lucene.index=DEBUG

# Audit debugging
# log4j.logger.org.alfresco.repo.audit=DEBUG
# log4j.logger.org.alfresco.repo.audit.model=DEBUG

# Forms debugging
# log4j.logger.org.alfresco.web.forms=debug
# log4j.logger.org.chiba.xml.xforms=debug
log4j.logger.org.alfresco.web.forms.xforms.XFormsBean=error
log4j.logger.org.alfresco.web.forms.XSLTRenderingEngine=error

# Property sheet and modelling debugging
# change to error to hide the warnings about missing properties and associations
log4j.logger.alfresco.missingProperties=warn
log4j.logger.org.alfresco.web.ui.repo.component.property.UIChildAssociation=warn
log4j.logger.org.alfresco.web.ui.repo.component.property.UIAssociation=warn
#log4j.logger.org.alfresco.web.ui.repo.component.property=debug

# Dictionary/Model debugging
log4j.logger.org.alfresco.repo.dictionary.DictionaryDAO=error
#log4j.logger.org.alfresco.repo.dictionary.DictionaryDAO=info

# Virtualization Server Registry
log4j.logger.org.alfresco.mbeans.VirtServerRegistry=error

# Spring context runtime property setter
log4j.logger.org.alfresco.util.RuntimeSystemPropertiesSetter=info

# Link Validation debugging
log4j.logger.org.alfresco.linkvalidation.LinkValidationServiceImpl=error
log4j.logger.org.alfresco.linkvalidation.LinkValidationStoreCallbackHandler=error

# Debugging options for clustering
log4j.logger.org.alfresco.repo.content.ReplicatingContentStore=error
log4j.logger.org.alfresco.repo.content.replication=error

#log4j.logger.org.alfresco.repo.deploy.DeploymentServiceImpl=debug

# Activity service
log4j.logger.org.alfresco.repo.activities=info

# Sharepoint
#log4j.logger.org.alfresco.module.vti=debug

###### Scripting #######

# Web Framework
log4j.logger.org.alfresco.web.scripts=warn
log4j.logger.org.alfresco.web.scripts.AlfrescoScriptDebugger=off

# Repository
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=error
log4j.logger.org.alfresco.repo.cmis.rest.CMISTest=info

# Freemarker
# Note the freemarker.runtime logger is used to log non-fatal errors that are handled by Alfresco's retrying transaction handler
log4j.logger.freemarker.runtime=fatal

####### Custom #########
log4j.logger.ca.someco.DevLogger=off

EDIT:  SOLVED

The solution to my problem lies in the manual page mrogers provided after all.  I have to set the additivity flag to false in my custom file:
log4j.additivity.ca.someco.DevLogger=false
Now it doesn't add to console