You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-user@logging.apache.org by Daling Xu <da...@sonexent.com> on 2002/06/06 23:58:05 UTC

config log4j to print to console from applet and logfile from servlet --- Please HELP!

Hi, All

I posted a message here two days ago, but nobody replied :(
Please take a look at this, any help will be warmly appreciated.

I am considering using log4j in my project, which is a web-application. I
used
j2sdk1.4, servlet 2.3 , java plug in 1.4, and log4j 1.2.3.  When I use log4j
to log informations in the jsp or servlet, every thing is fine, I can write
to both the console or a file in the server side.

Here is the log4j.properties I used, you can notice I configed two servlets
to log into different  destinations: console and file. It works.

log4j.rootLogger=FATAL, dest2
log4j.logger.servlet.UserLogin=FATAL
log4j.logger.servlet.Register=DEBUG, dest1

log4j.appender.dest1=org.apache.log4j.RollingFileAppender
log4j.appender.dest1.File=logExample.log
log4j.appender.dest1.MaxFileSize=100KB
log4j.appender.dest1.MaxBackupIndex=1
log4j.appender.dest1.layout=org.apache.log4j.PatternLayout

log4j.appender.dest2=org.apache.log4j.ConsoleAppender
log4j.appender.dest2.layout=org.apache.log4j.PatternLayout

Then I added an applet into my project and try to use logger in it also. If
I use the following log4j.prpoerties, it also works well, I can print to
console from both applet and servlet.

#every logger log to console
log4j.rootLogger=FATAL, dest2
log4j.logger.servlet.UserLogin=FATAL
log4j.logger.servlet.Register=DEBUG
log4j.logger.applet.myApplet=DEBUG

log4j.appender.dest1=org.apache.log4j.RollingFileAppender
log4j.appender.dest1.File=logExample.log
log4j.appender.dest1.MaxFileSize=100KB
log4j.appender.dest1.MaxBackupIndex=1
log4j.appender.dest1.layout=org.apache.log4j.PatternLayout

log4j.appender.dest2=org.apache.log4j.ConsoleAppender
log4j.appender.dest2.layout=org.apache.log4j.PatternLayout

But, I still want the logger to write to a file, because I can't access the
console of our deployed server. So I changed the log4j.properties to:

log4j.rootLogger=FATAL, dest2
log4j.logger.servlet.UserLogin=FATAL
#set servlet Register log to a file
log4j.logger.servlet.Register=DEBUG, dest1
log4j.logger.applet.myApplet=DEBUG, dest2

log4j.appender.dest1=org.apache.log4j.RollingFileAppender
log4j.appender.dest1.File=logExample.log
log4j.appender.dest1.MaxFileSize=100KB
log4j.appender.dest1.MaxBackupIndex=1
log4j.appender.dest1.layout=org.apache.log4j.PatternLayout

log4j.appender.dest2=org.apache.log4j.ConsoleAppender
log4j.appender.dest2.layout=org.apache.log4j.PatternLayout

Now, there is a java.security.AccessControlException, the exception
information is attached at end of this mail.

Is this a bug? How can I fix it?

I understand that in the applet I can't write to a file in the server side.
But I still want to have the flexibility to log to the file from the
servlet. Now it looks that I can only log to console if I want the applet
also use log4j.

Here is the error message from the applet:

java.lang.ExceptionInInitializerError

	at org.apache.log4j.Category.getInstance(Category.java:517)

	at com.myCompany.myProject.myPackage.myApplet.<clinit>(myApplet.java:84)

	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
Source)

	at java.lang.reflect.Constructor.newInstance(Unknown Source)

	at java.lang.Class.newInstance0(Unknown Source)

	at java.lang.Class.newInstance(Unknown Source)

	at sun.applet.AppletPanel.createApplet(Unknown Source)

	at sun.plugin.AppletViewer.createApplet(Unknown Source)

	at sun.applet.AppletPanel.runLoader(Unknown Source)

	at sun.applet.AppletPanel.run(Unknown Source)

	at java.lang.Thread.run(Unknown Source)

Caused by: java.security.AccessControlException: access denied
(java.io.FilePermission logFile.log write)

	at java.security.AccessControlContext.checkPermission(Unknown Source)

	at java.security.AccessController.checkPermission(Unknown Source)

	at java.lang.SecurityManager.checkPermission(Unknown Source)

	at java.lang.SecurityManager.checkWrite(Unknown Source)

	at java.io.FileOutputStream.<init>(Unknown Source)

	at java.io.FileOutputStream.<init>(Unknown Source)

	at org.apache.log4j.FileAppender.setFile(FileAppender.java:272)

	at
org.apache.log4j.RollingFileAppender.setFile(RollingFileAppender.java:156)

	at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:151)

	at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:248)

	at
org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:124
)

	at
org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:88)

	at
org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.jav
a:645)

	at
org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.jav
a:603)

	at
org.apache.log4j.PropertyConfigurator.parseCatsAndRenderers(PropertyConfigur
ator.java:524)

	at
org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:
408)

	at
org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:
432)

	at
org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.
java:456)

	at org.apache.log4j.LogManager.<clinit>(LogManager.java:145)

	... 13 more

Any information will be appreciated.

Daling



--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>