I wonder what I did wrong... I did: * change appenders.xml and changes.xml * commit locally (not commit and push) * rebase with origin/master ...and got a lot of conflicts.
The changes.xml conflict is expected, but it's marking all files I added (MemoryMappedFileAppender.java, etc) as conflicting additions now... Should I have pushed my local changes to the remote 431 branch before rebasing with origin/master? On Thursday, September 18, 2014, Remko Popma <[email protected]> wrote: > I rephrased it but when I tried to rebase the branch I got tons of > conflicts and got stuck. I'll try again tonight. > > Sent from my iPhone > > On 2014/09/18, at 1:55, Matt Sicker <[email protected] > <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote: > > I think it would definitely be a good idea to mention "since 2.1" or a > similar message. That's rather important since we don't maintain past > versions of the website manual. > > On 17 September 2014 11:13, Gary Gregory <[email protected] > <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote: > >> I would say nothing, otherwise, we should go around all of the docs and >> put "beta" on all the new stuff. I think the docs maybe could say "since >> 2.1" or "new" for the new stuff. But it is says "new" or "beta" you have to >> go edit that again when we release. I think it is best to have a "what's >> new section" that tracks what was added in each version. >> >> Gary >> >> On Wed, Sep 17, 2014 at 12:02 PM, Remko Popma <[email protected] >> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote: >> >>> Shall I replace "Experimental" with "Beta" in the docs for this >>> component then until 2.1 final? I'm fine with that. >>> >>> On Thu, Sep 18, 2014 at 12:48 AM, Gary Gregory <[email protected] >>> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote: >>> >>>> I do not think this should be marker "experimental". >>>> >>>> If it is brought into trunk for 2.1 and we have a beta, we can say, >>>> this and that are new, it's a beta. >>>> >>>> Gary >>>> >>>> ---------- Forwarded message ---------- >>>> From: <[email protected] >>>> <javascript:_e(%7B%7D,'cvml','[email protected]');>> >>>> Date: Wed, Sep 17, 2014 at 11:45 AM >>>> Subject: [1/3] git commit: LOG4J2-431 MemoryMappedFileAppender manual >>>> page >>>> To: [email protected] >>>> <javascript:_e(%7B%7D,'cvml','[email protected]');> >>>> >>>> >>>> Repository: logging-log4j2 >>>> Updated Branches: >>>> refs/heads/LOG4J2-431 64369f3d7 -> 63aed83d6 >>>> >>>> >>>> LOG4J2-431 MemoryMappedFileAppender manual page >>>> >>>> Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo >>>> Commit: >>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/80dafe9e >>>> Tree: >>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/80dafe9e >>>> Diff: >>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/80dafe9e >>>> >>>> Branch: refs/heads/LOG4J2-431 >>>> Commit: 80dafe9e85c28f89d5b4d411d8b28c33642f411f >>>> Parents: 64369f3 >>>> Author: rpopma <[email protected] >>>> <javascript:_e(%7B%7D,'cvml','[email protected]');>> >>>> Authored: Thu Sep 18 00:42:50 2014 +0900 >>>> Committer: rpopma <[email protected] >>>> <javascript:_e(%7B%7D,'cvml','[email protected]');>> >>>> Committed: Thu Sep 18 00:42:50 2014 +0900 >>>> >>>> ---------------------------------------------------------------------- >>>> src/site/xdoc/manual/appenders.xml | 131 >>>> ++++++++++++++++++++++++++++++++ >>>> 1 file changed, 131 insertions(+) >>>> ---------------------------------------------------------------------- >>>> >>>> >>>> >>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/80dafe9e/src/site/xdoc/manual/appenders.xml >>>> ---------------------------------------------------------------------- >>>> diff --git a/src/site/xdoc/manual/appenders.xml >>>> b/src/site/xdoc/manual/appenders.xml >>>> index 032983b..7d47f78 100644 >>>> --- a/src/site/xdoc/manual/appenders.xml >>>> +++ b/src/site/xdoc/manual/appenders.xml >>>> @@ -1320,6 +1320,137 @@ public class JpaLogEntity extends >>>> AbstractLogEventWrapperEntity { >>>> ... >>>> }]]></pre> >>>> </subsection> >>>> + <a name="MemoryMappedFileAppender" /> >>>> + <subsection name="MemoryMappedFileAppender"> >>>> + <p><i>Experimental. This has been tested on several platforms, >>>> but this is >>>> + a new component (since 2.1) and does not yet have much track >>>> record.</i></p> >>>> + <p> >>>> + The MemoryMappedFileAppender maps a part of the specified >>>> file into memory >>>> + and writes log events to this memory, relying on the >>>> operating system's >>>> + virtual memory manager to synchronize the changes to the >>>> storage device. >>>> + The main benefit of doing this is I/O performance. Instead >>>> of making system >>>> + calls to write to disk, this appender can simply change the >>>> program's local memory, >>>> + which is orders of magnitude faster. Also, in most operating >>>> systems the memory >>>> + region mapped actually is the kernel's <a href=" >>>> http://en.wikipedia.org/wiki/Page_cache">page >>>> + cache</a> (file cache), meaning that no copies need to be >>>> created in user space. >>>> + (TODO: performance tests that compare performance of this >>>> appender to >>>> + RandomAccessFileAppender and FileAppender.) >>>> + </p> >>>> + <p> >>>> + There is some overhead with mapping a file region into >>>> memory, >>>> + especially very large regions (half a gigabyte or more). >>>> + The default region size is 32 MB, which should strike a >>>> reasonable balance >>>> + between the frequency and the duration of remap operations. >>>> + (TODO: performance test remapping various sizes.) >>>> + </p> >>>> + <p> >>>> + Similar to the FileAppender and the RandomAccessFileAppender, >>>> + MemoryMappedFileAppender uses a MemoryMappedFileManager to >>>> actually perform the >>>> + file I/O. While MemoryMappedFileAppender from different >>>> Configurations >>>> + cannot be shared, the MemoryMappedFileManagers can be if the >>>> Manager is >>>> + accessible. For example, two web applications in a servlet >>>> container can have >>>> + their own configuration and safely write to the same file if >>>> Log4j >>>> + is in a ClassLoader that is common to both of them. >>>> + </p> >>>> + <table> >>>> + <caption align="top">MemoryMappedFileAppender >>>> Parameters</caption> >>>> + <tr> >>>> + <th>Parameter Name</th> >>>> + <th>Type</th> >>>> + <th>Description</th> >>>> + </tr> >>>> + <tr> >>>> + <td>append</td> >>>> + <td>boolean</td> >>>> + <td>When true - the default, records will be appended to >>>> the end >>>> + of the file. When set to false, the file will be cleared >>>> before >>>> + new records are written. >>>> + </td> >>>> + </tr> >>>> + <tr> >>>> + <td>fileName</td> >>>> + <td>String</td> >>>> + <td>The name of the file to write to. If the file, or any >>>> of its >>>> + parent directories, do not exist, they will be created. >>>> + </td> >>>> + </tr> >>>> + <tr> >>>> + <td>filters</td> >>>> + <td>Filter</td> >>>> + <td>A Filter to determine if the event should be handled >>>> by this >>>> + Appender. More than one Filter may be used by using a >>>> CompositeFilter. >>>> + </td> >>>> + </tr> >>>> + <tr> >>>> + <td>immediateFlush</td> >>>> + <td>boolean</td> >>>> + <td> >>>> + <p>When set to true, each write will be followed by a >>>> + call to <a href=" >>>> http://docs.oracle.com/javase/7/docs/api/java/nio/MappedByteBuffer.html#force() >>>> ">MappedByteBuffer.force()</a>. >>>> + This will guarantee the data is written to the storage >>>> device. >>>> + </p> >>>> + <p>The default for this parameter is <code>false</code>. >>>> + This means that the data is written to the storage >>>> device even >>>> + if the Java process crashes, but there may be data >>>> loss if the >>>> + operating system crashes. Note that manually forcing a >>>> sync on every >>>> + log event loses most of the performance benefits of >>>> using a memory mapped file.</p> >>>> + <p>Flushing after every write is only useful when using >>>> this >>>> + appender with synchronous loggers. Asynchronous loggers >>>> and >>>> + appenders will automatically flush at the end of a batch >>>> of events, >>>> + even if immediateFlush is set to false. This also >>>> guarantees >>>> + the data is written to disk but is more efficient. >>>> + </p> >>>> + </td> >>>> + </tr> >>>> + <tr> >>>> + <td>regionLength</td> >>>> + <td>int</td> >>>> + <td>The length of the mapped region, defaults to 32 MB >>>> + (32 * 1024 * 1024 bytes). This parameter must be a value >>>> + between 256 and 1,073,741,824 (1 GB or 2^30); >>>> + values outside this range will be adjusted to the >>>> closest valid >>>> + value. >>>> + Log4j will round the specified value up to the nearest >>>> power of two.</td> >>>> + </tr> >>>> + <tr> >>>> + <td>layout</td> >>>> + <td>Layout</td> >>>> + <td>The Layout to use to format the LogEvent</td> >>>> + </tr> >>>> + <tr> >>>> + <td>name</td> >>>> + <td>String</td> >>>> + <td>The name of the Appender.</td> >>>> + </tr> >>>> + <tr> >>>> + <td>ignoreExceptions</td> >>>> + <td>boolean</td> >>>> + <td>The default is <code>true</code>, causing exceptions >>>> encountered while appending events to be >>>> + internally logged and then ignored. When set to >>>> <code>false</code> exceptions will be propagated to the >>>> + caller, instead. You must set this to <code>false</code> >>>> when wrapping this Appender in a >>>> + <a href="#FailoverAppender">FailoverAppender</a>.</td> >>>> + </tr> >>>> + </table> >>>> + <p> >>>> + Here is a sample MemoryMappedFile configuration: >>>> + </p> >>>> + >>>> + <pre class="prettyprint linenums"><![CDATA[<?xml >>>> version="1.0" encoding="UTF-8"?> >>>> +<Configuration status="warn" name="MyApp" packages=""> >>>> + <Appenders> >>>> + <MemoryMappedFile name="MyFile" fileName="logs/app.log"> >>>> + <PatternLayout> >>>> + <Pattern>%d %p %c{1.} [%t] %m%n</Pattern> >>>> + </PatternLayout> >>>> + </MemoryMappedFile> >>>> + </Appenders> >>>> + <Loggers> >>>> + <Root level="error"> >>>> + <AppenderRef ref="MyFile"/> >>>> + </Root> >>>> + </Loggers> >>>> +</Configuration>]]></pre> >>>> + </subsection> >>>> <a name="NoSQLAppender"/> >>>> <subsection name="NoSQLAppender"> >>>> <p>The NoSQLAppender writes log events to a NoSQL database >>>> using an internal lightweight provider interface. >>>> >>>> >>>> >>>> >>>> -- >>>> E-Mail: [email protected] >>>> <javascript:_e(%7B%7D,'cvml','[email protected]');> | >>>> [email protected] >>>> <javascript:_e(%7B%7D,'cvml','[email protected]');> >>>> Java Persistence with Hibernate, Second Edition >>>> <http://www.manning.com/bauer3/> >>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >>>> Spring Batch in Action <http://www.manning.com/templier/> >>>> Blog: http://garygregory.wordpress.com >>>> Home: http://garygregory.com/ >>>> Tweet! http://twitter.com/GaryGregory >>>> >>> >>> >> >> >> -- >> E-Mail: [email protected] >> <javascript:_e(%7B%7D,'cvml','[email protected]');> | >> [email protected] >> <javascript:_e(%7B%7D,'cvml','[email protected]');> >> Java Persistence with Hibernate, Second Edition >> <http://www.manning.com/bauer3/> >> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> >> Spring Batch in Action <http://www.manning.com/templier/> >> Blog: http://garygregory.wordpress.com >> Home: http://garygregory.com/ >> Tweet! http://twitter.com/GaryGregory >> > > > > -- > Matt Sicker <[email protected] > <javascript:_e(%7B%7D,'cvml','[email protected]');>> > >
