logging-log4j-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Remko Popma <rem...@yahoo.com>
Subject Re: How to use FastFile
Date Sun, 28 Apr 2013 01:27:38 GMT
Steven,

The buffer size used in FastAppenders is 256 Kb.
Glad that with asyncRoot you are seeing logs.

With asyncRoot, log events are first stored in a ringbuffer, then a separate thread takes
them out and logs them to a file.
Based on the log snippet you attached, it looks like we need to check if and how tomcat signals
a shutdown and if we can pick up that signal to shutdown the threadpool.
Thanks for bringing it to our attention!

I have filed Jira ticket LOG4J2-222 for this. I will take a look and see what I can do.
This may take some time.

Best regards,
Remko


________________________________
 From: Steven Yang <kenshin520@gmail.com>
To: Remko Popma <remkop@yahoo.com> 
Sent: Sunday, April 28, 2013 9:43 AM
Subject: Re: How to use FastFile
 


Thanks, I tried using asyncRoot and everything seems to log fine and I do see a lot of logs.
And logs do seem to be flushed immediately so I do not know if the hook on shutdown is been
called correctly or not.

I am using struts and spring so I see a lot of logs (log level at DEBUG) just by starting
up tomcat, so I am wondering when I use <root> how come I dont see any log at all? how
much log do I have to write before it starts to flush out? 

and one thing I found is that when I use asyncRoot and when I shutdown tomcat I see the following
message regarding to clearing references and thread local.
The last one is related to log4j.

四月 28, 2013 8:34:46 上午 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
SEVERE: The web application [/test] registered the JBDC driver [org.h2.Driver] but failed
to unregister it when the web application was stopped. To prevent a memory leak, the JDBC
Driver has been forcibly unregistered.
四月 28, 2013 8:34:46 上午 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/test] appears to have started a thread named [pool-2-thread-1]
but has failed to stop it. This is very likely to create a memory leak.
四月 28, 2013 8:34:46 上午 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
SEVERE: The web application [/test] created a ThreadLocal with key of type [java.lang.ThreadLocal]
(value [java.lang.ThreadLocal@454e119d]) and a value of type [com.opensymphony.xwork2.inject.ContainerImpl]
(value [com.opensymphony.xwork2.inject.ContainerImpl@8667df7]) but failed to remove it when
the web application was stopped. This is very likely to create a memory leak.
四月 28, 2013 8:34:46 上午 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
SEVERE: The web application [/test] created a ThreadLocal with key of type [java.lang.ThreadLocal]
(value [java.lang.ThreadLocal@d7e770]) and a value of type [org.apache.logging.log4j.core.impl.Log4jLogEvent]
(value [Logger=org.springframework.beans.factory.support.DefaultListableBeanFactory Level=INFO
Message=Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@61e118f9:
defining beans [org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframewo...

I am trying this on tomcat 6.0.29. 
However the thing is that I dont see the message when I use <root>.




On Sun, Apr 28, 2013 at 12:07 AM, Remko Popma <remkop@yahoo.com> wrote:

Steven,
>
>
>In your config, instead of <root>, try <asyncRoot>. You need the disruptor
jar on the classpath. This will result in events being flushed to disk immediately, but in
an efficient way: in batches, not one by one. 
>
>
>I need to take a look at the behavior on Tomcat shutdown. There is a shutdown hook that
should flush remaining events, but perhaps you found a bug.
>
>
>Can you try <asyncRoot> and let me know if that resolves the issue?
>
>Sent from my iPhone
>
>On 2013/04/27, at 23:27, Steven Yang <kenshin520@gmail.com> wrote:
>
>
>Thanks Remko for the comment
>>
>>
>>Ok I now understand why I dont see the log. 
>>I am running in a tomcat, but when I shutdown my web server I dont see log being flushed
out to file. 
>>Does that mean even when I run my application for a while and even after some logs
are flushed out then I shutdown my server there will be some log entries left in memory and
lost?
>>
>>
>>
>>On Sat, Apr 27, 2013 at 6:51 PM, Remko Popma <remkop@yahoo.com> wrote:
>>
>>(Including Steven in recipients)
>>>
>>>Sent from my iPhone
>>>
>>>
>>>On 2013/04/27, at 19:06, Remko Popma <remkop@yahoo.com> wrote:
>>>
>>>> Two more things:
>>>>
>>>> disruptor 3.0.1 is fine.
>>>>
>>>> Your layout pattern doesn't actually use location, so if you use Async (Logger
or Appender) I'd recommend you set includeLocation=false for better performance.
>>>>
>>>> Remko
>>>>
>>>> Sent from my iPhone
>>>>
>>>> On 2013/04/27, at 18:59, Remko Popma <remkop@yahoo.com> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> FastFile appenders are buffered.
>>>>> You won't see output in the log file until you log a lot.
>>>>>
>>>>> To see output immediately you should either specify immediateFlush=true
or use Async Loggers or AsynchAppender (they will auto-flush efficiently).
>>>>>
>>>>> Hope this helps,
>>>>> Remko
>>>>>
>>>>> Sent from my iPhone
>>>>>
>>>>> On 2013/04/27, at 18:36, Steven Yang <kenshin520@gmail.com> wrote:
>>>>>
>>>>>> I am using log4j beta5 and want to try async file appender FastFile.
>>>>>> However I could not get it to work.
>>>>>> I have built the disruptor jar using project from
>>>>>> https://github.com/LMAX-Exchange/disruptor so my disruptor is 3.0.1
not
>>>>>> 3.0.0, dont know if it matters.
>>>>>>
>>>>>> I simply follow the sample setup from
>>>>>> http://logging.apache.org/log4j/2.x/manual/async.html#Performance.
>>>>>>
>>>>>> But I could not see anything log into my log file, I can see the
log file
>>>>>> created but nothing inside.
>>>>>> If I simply change from FastFile to File, I can see all the logs
that
>>>>>> suppose to appear.
>>>>>> I have the following jars in my project
>>>>>> log4j-api-2.0-beta5.jar
>>>>>> log4j-core-2.0-beta5.jar
>>>>>> log4j-jcl-2.0-beta5.jar
>>>>>> log4j-slf4j-impl-2.0-beta5.jar
>>>>>>
>>>>>> In my project I mainly use slf4j but even if I try to use log4j api
direct,
>>>>>> it still doesnt work.
>>>>>>
>>>>>> here is my log4j2.xml
>>>>>>
>>>>>> <configuration status="DEBUG">
>>>>>>  <appenders>
>>>>>>  <FastFile name="FastFile"
>>>>>> fileName="D:/Projects/TestingProject/logs/log4jtest.log"
>>>>>> immediateFlush="false" append="false" suppressExceptions="false">
>>>>>>    <PatternLayout>
>>>>>>      <pattern>%d %p %c{1.} [%t] %m %ex%n</pattern>
>>>>>>    </PatternLayout>
>>>>>>  </FastFile>
>>>>>> </appenders>
>>>>>> <loggers>
>>>>>>  <root level="debug" includeLocation="true">
>>>>>>    <appender-ref ref="FastFile"/>
>>>>>>  </root>
>>>>>> </loggers>
>>>>>> </configuration>
>>>>>>
>>>>>> What am I doing wrong? or do I need to check for any dependency for
>>>>>> disruptor?
>>>>>>
>>>>>> Thanks
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
>>>>> For additional commands, e-mail: log4j-user-help@logging.apache.org
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
>>>> For additional commands, e-mail: log4j-user-help@logging.apache.org
>>>>
>>>
>>
Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message