[ 
https://issues.apache.org/jira/browse/LOG4J2-547?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13944312#comment-13944312
 ] 

Bruce Brouwer commented on LOG4J2-547:
--------------------------------------

It was definitely a good call to write these tests. I'm running into all kinds 
of trouble. The various InputStream and Reader tests were easy to fix, but I'm 
struggling to see what should be done with PrintStream. Check out this call 
stack:

{code}
LoggerPrintStream.write(byte[], int, int) line: 113     
StreamEncoder.writeBytes() line: 221 [local variables unavailable]      
StreamEncoder.implFlushBuffer() line: 291 [local variables unavailable] 
StreamEncoder.flushBuffer() line: 104 [local variables unavailable]     
OutputStreamWriter.flushBuffer() line: 185 [local variables unavailable]        
LoggerPrintStream(PrintStream).write(char[]) line: 505  
LoggerPrintStream(PrintStream).print(char[]) line: 653  
LoggerPrintStream.print(char[]) line: 158       
LoggerPrintStream(PrintStream).println(char[]) line: 792        
LoggerPrintStream.println(char[]) line: 208     
LoggerPrintStreamCallerInfoTest.print_chararray() line: 74      
{code}

The FQCN logic trips up pretty quickly as it looks at that top element, which 
is the FQCN it is looking for, so it return the next item down in the call 
stack, which is {{sun.nio.cs.StreamEncoder}}. The only thing I can think of to 
make this work is to go back to the way this was before I started messing 
around with this and LoggerPrintStream simply delegates to another PrintStream.

Should this delegate mechanism be what we use for all of these streams?

> Update LoggerStream API
> -----------------------
>
>                 Key: LOG4J2-547
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-547
>             Project: Log4j 2
>          Issue Type: Improvement
>          Components: API
>    Affects Versions: 2.0-rc1
>            Reporter: Matt Sicker
>            Assignee: Ralph Goers
>             Fix For: 2.0
>
>         Attachments: 0001-PrintStream-API-update.patch, 
> log4j2-547-bbrouwer.patch, log4j2-loggerStream.patch
>
>
> I've got some ideas on how to improve the LoggerStream idea that I added a 
> little while ago. The main thing I'd like to do is extract an interface from 
> it, rename the default implementation to SimpleLoggerStream (part of the 
> SimpleLogger stuff), and allow log4j implementations to specify a different 
> implementation if desired.
> In doing this, I'm not sure where specifically I'd prefer the getStream 
> methods to be. Right now, it's in Logger, but really, it could be in 
> LoggerContext instead. I don't think I should be required to get a Logger 
> just to get a LoggerStream.
> Now if only the java.io package used interfaces instead of classes. This 
> would be so much easier to design!



--
This message was sent by Atlassian JIRA
(v6.2#6252)

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-dev-h...@logging.apache.org

Reply via email to