[logback-dev] [JIRA] Commented: (LBCORE-128) Please support implementation of binary log files in RollingFileAppender/FileAppender

Ceki Gulcu (JIRA) noreply-jira at qos.ch
Fri Feb 19 12:43:33 CET 2010

    [ http://jira.qos.ch/browse/LBCORE-128?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=11547#action_11547 ] 

Ceki Gulcu commented on LBCORE-128:

> Concerning your edit in the comment above: 
> I thought Encoder would also be used in other Appenders,
> i.e. SocketAppender. If this would be the case, the new SocketAppender
> wouldn't be able to stay compatible with the current one since it
> streams a fixed amount before recreating the ObjectOutputStream (if I
> remember correctly).

Encoder could be used in other appenders, e.g. SocketAppender. I did not get that far yet. The ObjectOutputStream is reset() approx. every
100 events. It is not recreated unless the socket connection goes bad. Consequently, I think it would be possible to move some of the curent code in SocketAppender to an appropriate encoder and remain compatible with existing socket servers. Of course, this open the door for injecting different encoders catering for different needs.
> I'll try to take a look at your branch this weekend.
> Unfortunately, I won't be able to check it out today. 

Whatever is convenient for you is fine.

I am also experimenting with the following Encoder interface:

public interface Encoder<E> extends ContextAware, LifeCycle {
   void init(OutputStream os) throws IOException;
  void doEncode(E event) throws IOException;
  void close() throws IOException;

As for your original question regarding Encoder extending ContextAware and LifeCycle, all logback components are expected to support a lifecycle and be context aware.

> Please support implementation of binary log files in RollingFileAppender/FileAppender
> -------------------------------------------------------------------------------------
>                 Key: LBCORE-128
>                 URL: http://jira.qos.ch/browse/LBCORE-128
>             Project: logback-core
>          Issue Type: Improvement
>          Components: Appender
>    Affects Versions: 0.9.17
>            Reporter: Joern Huxhorn
>            Assignee: Ceki Gulcu
> This was discussed briefly at http://marc.info/?l=logback-dev&m=124905434331308&w=2 and I forgot to file a ticket about this.
> Currently, RandomFileAppender => FileAppender => WriterAppender is using the following method in WriterAppender to actually write the data:
> protected void writerWrite(String s, boolean flush) throws IOException
> Please add an additional method like
> protected void writerWrite(byte[] bytes, boolean flush) throws IOException
> to write to the underlying stream directly.
> writerWrite(String, boolean) could call that method after performing the transformation internally, making this change transparent for the rest of the implementation.
> Using a binary format for logfiles could have tremendous performance impact as can be seen here: http://sourceforge.net/apps/trac/lilith/wiki/SerializationPerformance

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators: http://jira.qos.ch/secure/Administrators.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the logback-dev mailing list