Makes sense.
 
Meanwhile I created an isolated testcase. Seems I have to buy me a new set of 
glasses. It works as expected - of course ;).
Re-trying that on my application seems to work as well. Can't say for sure what 
I did wrong back then.
 
Sorry for any inconvenience!
 
Cheers
Veit
 

Gesendet: Donnerstag, 04. Februar 2016 um 02:19 Uhr
Von: "Remko Popma" <[email protected]>
An: "Log4J Users List" <[email protected]>
Betreff: Re: RollingRandomAccessFile and emtpy log file
Just wondering if it really is a problem in the logging library or if it 
appeared that way because things were not refreshing on your screen properly.

Sent from my iPhone

> On 2016/02/04, at 8:32, Veit Guna <[email protected]> wrote:
>
> Yes it was Windows, but I had Notepad++ open to reload the content :)...
>
>
>> Am 04.02.2016 um 00:30 schrieb Remko Popma:
>> Was this in Windows? Sometimes Explorer doesn't update until you refresh...
>>
>> Sent from my iPhone
>>
>>> On 2016/02/04, at 7:34, Veit Guna <[email protected]> wrote:
>>>
>>> Hi Remko.
>>>
>>> It even didn't flush after I had written 600 KB to it - only after I had
>>> stopped tomcat - but I will doublecheck and provide a testcase then.
>>>
>>> I haven't experimented with smaller buffer sizes yet. But I'll look into
>>> that too.
>>>
>>> Thanks for your help.
>>>
>>> Veit
>>>
>>>> Am 03.02.2016 um 23:28 schrieb Remko Popma:
>>>> You mention that RollingRandomAccessFile appender with 
>>>> immediateFlush=false and a buffer size of 256K did not flush to disk until 
>>>> you logged 600KB. Looking at the code I don't see how this is possible but 
>>>> you may have found a bug. Is this reproducible? If so, can you raise a 
>>>> Jira with a small test program that reproduces the issue?
>>>>
>>>> Continuing our discussion about workarounds:
>>>>
>>>> You can use either appender. The performance numbers (random access file 
>>>> appender being 1.3 - 2 times faster than file appender) are for 
>>>> immediateFlush=false. I don't have numbers for immediateFlush=true.
>>>>
>>>> There's a separate attribute for setting the buffer size (for both 
>>>> appenders). Perhaps a smaller buffer size would flush sooner, have you 
>>>> experimented with that?
>>>>
>>>> Remko
>>>>
>>>> Sent from my iPhone
>>>>
>>>>> On 2016/02/04, at 0:06, Veit Guna <[email protected]> wrote:
>>>>>
>>>>> So, If I would like to use a rolling file appender with synchronous 
>>>>> logging, but _with_ buffering and so _not_ flushing on every event what 
>>>>> should
>>>>> I use? RollingRandomAccessFile with immediateFlush="true" or the "normal" 
>>>>> RollingFileAppender :)? Does immediateFlush="true" take the buffer into 
>>>>> account?
>>>>>
>>>>> Thanks
>>>>> Veit
>>>>>
>>>>>
>>>>> Gesendet: Mittwoch, 03. Februar 2016 um 13:43 Uhr
>>>>> Von: "Remko Popma" <[email protected]>
>>>>> An: "Log4J Users List" <[email protected]>
>>>>> Betreff: Re: Aw: Re: RollingRandomAccessFile and emtpy log file
>>>>> Sorry my message was unclear.
>>>>>
>>>>> RollingRandomAccessFile appender does not _need_ async loggers, it's just 
>>>>> that if you choose to use async loggers, you will get the side-effect of 
>>>>> regular flushing in the background. So it achieves your goal (of flushing 
>>>>> the buffer to disk.)
>>>>>
>>>>> You can also set immediateFlush to true to achieve this, but this will 
>>>>> write to disk on _every_ event *in your application thread*.
>>>>>
>>>>> If performance is important, async logging is 10-20 times faster than 
>>>>> synchronous logging. The difference between the normal file appender and 
>>>>> random access file is much smaller (random access file appender is only 
>>>>> 1.3 - 2 times faster than file appender).
>>>>>
>>>>> :-)
>>>>>
>>>>> Sent from my iPhone
>>>>>
>>>>>> On 2016/02/03, at 21:01, Veit Guna <[email protected]> wrote:
>>>>>>
>>>>>> immediateFlush="true" seems to work - without adding async config 
>>>>>> options. Adding the system property does also work, but needs 
>>>>>> disruptor.jar on
>>>>>> the classpath - as it seems. Otherwise a ClassNotFoundException occurs. 
>>>>>> Although the documentation states, that the RandomAccessFile appenders 
>>>>>> do _not_ need the disruptor.jar ;).
>>>>>>
>>>>>> Ok then. Since I don't want to add an additional dependency, I would go 
>>>>>> for immediateFlush="true". But now I'm wondering whether it would be 
>>>>>> better to just use the normal RollingFileAppender with not specifying 
>>>>>> flush behavior at all. Which one is faster in synchronous mode :)?
>>>>>>
>>>>>> Thanks
>>>>>> Veit
>>>>>>
>>>>>>
>>>>>>
>>>>>> Gesendet: Mittwoch, 03. Februar 2016 um 12:37 Uhr
>>>>>> Von: "Veit Guna" <[email protected]>
>>>>>> An: [email protected]
>>>>>> Betreff: Aw: Re: RollingRandomAccessFile and emtpy log file
>>>>>> Hi Remko.
>>>>>>
>>>>>> I've read about the AsyncLoggerContextSelector but I didn't try it - to 
>>>>>> be honest. As the documentation doesn't state anything about
>>>>>> that the RollingRandomAccessFile appender needs async functionality, I 
>>>>>> didn't took this into account.
>>>>>> Maybe there could be added some hint in the documentation about that 
>>>>>> (needs async or not)? Or maybe just don't allow starting up log4j when
>>>>>> the configuration is (obviously) wrong :)?
>>>>>>
>>>>>> So I'll check for the async configuration option and report back.
>>>>>>
>>>>>> Thanks!
>>>>>> Veit
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Gesendet: Mittwoch, 03. Februar 2016 um 12:13 Uhr
>>>>>> Von: "Remko Popma" <[email protected]>
>>>>>> An: "Log4J Users List" <[email protected]>
>>>>>> Betreff: Re: RollingRandomAccessFile and emtpy log file
>>>>>> I would say immediateFlush but that doesn't explain why you're not 
>>>>>> seeing the update until after logging 600 KB when the buffer is only 256 
>>>>>> KB...
>>>>>>
>>>>>> Have you tried setting system property 
>>>>>> -DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
>>>>>> to switch on async loggers? This will ensure the buffer is always 
>>>>>> flushed to disk, but it uses smart batching to achieve this in an 
>>>>>> efficient manner (and it happens on the background thread, so no impact 
>>>>>> on your application).
>>>>>>
>>>>>> Sent from my iPhone
>>>>>>
>>>>>>> On 2016/02/03, at 17:47, Veit Guna <[email protected]> wrote:
>>>>>>>
>>>>>>> Hi.
>>>>>>>
>>>>>>> I'm using log4j 2.5 with the RollingRandomAccessFile. When the 
>>>>>>> application starts up and performs logging, the logfile
>>>>>>> gets created, but nothing is written to it. Only after I stop the 
>>>>>>> application the content appears. I also doublechecked the 256KB
>>>>>>> buffer. But logging 600KB doesn't seem to trigger a write to the file. 
>>>>>>> Console appender is working fine.
>>>>>>>
>>>>>>> Any idea what I'm missing?
>>>>>>>
>>>>>>> Here's my configuration:
>>>>>>>
>>>>>>> --cut here--
>>>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>>>> <Configuration>
>>>>>>>
>>>>>>> <Properties>
>>>>>>> <Property 
>>>>>>> name="logsPath">${sys:app.logs:-${env:APP_LOGS:-logs}}</Property>
>>>>>>> </Properties>
>>>>>>>
>>>>>>> <Appenders>
>>>>>>> <RollingRandomAccessFile name="rollingFileAppender" 
>>>>>>> fileName="${logsPath}/app.log" 
>>>>>>> filePattern="${logsPath}/app-%d{yyyy-MM-dd}-%i.log" 
>>>>>>> immediateFlush="false">
>>>>>>> <PatternLayout>
>>>>>>> <pattern>%d %-5p [%mdc{RQID}] [%c{1}] - %m%n</pattern>
>>>>>>> </PatternLayout>
>>>>>>> <Policies>
>>>>>>> <SizeBasedTriggeringPolicy size="10 MB" />
>>>>>>> </Policies>
>>>>>>> <DefaultRolloverStrategy max="5" />
>>>>>>> </RollingRandomAccessFile>
>>>>>>> <Console name="consoleAppender" target="SYSTEM_OUT">
>>>>>>> <PatternLayout pattern="%d{HH:mm:ss,SSS} %-5p [%mdc{RQID}] [%c{1}] - 
>>>>>>> %m%n" />
>>>>>>> </Console>
>>>>>>> </Appenders>
>>>>>>>
>>>>>>> <Loggers>
>>>>>>> <Logger name="com.acme.app" level="info" />
>>>>>>>
>>>>>>> <!-- spring -->
>>>>>>> <Logger name="org.springframework.security" level="info" />
>>>>>>> <Logger name="org.springframework.transaction" level="info" />
>>>>>>> <Logger name="org.springframework.orm.jpa" level="info" />
>>>>>>>
>>>>>>> <!-- log SQL statements -->
>>>>>>> <Logger name="org.hibernate.SQL" level="error" />
>>>>>>> <!-- log bind parameters -->
>>>>>>> <Logger name="org.hibernate.type" level="error" />
>>>>>>>
>>>>>>> <Root level="info">
>>>>>>> <AppenderRef ref="consoleAppender" />
>>>>>>> <AppenderRef ref="rollingFileAppender" />
>>>>>>> </Root>
>>>>>>> </Loggers>
>>>>>>>
>>>>>>> </Configuration>
>>>>>>> --cut here--
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: [email protected]
>>>>>>> For additional commands, e-mail: [email protected]
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: [email protected]
>>>>>> For additional commands, e-mail: [email protected]
>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: [email protected]
>>>>>> For additional commands, e-mail: [email protected]
>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: [email protected]
>>>>>> For additional commands, e-mail: [email protected]
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: [email protected]
>>>>> For additional commands, e-mail: [email protected]
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: [email protected]
>>>>> For additional commands, e-mail: [email protected]
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [email protected]
>>>> For additional commands, e-mail: [email protected]
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [email protected]
>>> For additional commands, e-mail: [email protected]
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
 

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to