Stepping back a bit... what real life problem is all of this stream stuff 
solving? I hope we have good docs ;)

Gary

-------- Original message --------
From: Matt Sicker <[email protected]> 
Date:03/24/2014  22:02  (GMT-05:00) 
To: Log4J Developers List <[email protected]> 
Subject: Re: Would like to change a bit of the SimpleLogger API. Feedback 
requested. 

Good point. So in order to add configurable charset support, it would be best 
to continue using streams instead of writers. The character set should probably 
be stored in SimpleLoggerContext. I don't remember if specific charset support 
is already there for core.Logger[Context], so that might be worth looking into 
as well down the line.


On 24 March 2014 20:23, Bruce Brouwer <[email protected]> wrote:
I think it should remain a PrintStream. The PrintWriter still uses a charset by 
defaulting to the platform encoding, but you have no way to choose it unless 
you specify that you are writing to a file. I think PrintWriter needs some more 
constructor options when giving it an OutputStream, but that's just my opinion. 
At least with PrintWriter you have the option to choose the charset when giving 
it an OutputStream.

What might make sense is to change the SimpleLoggerContext constructor to pull 
out the charset name from the props when falling into the case where it is 
creating a FileOutputStream. All you need to change is the line that currently 
reads like this:

ps = new PrintStream(os);

change it to something like this:

final String charset = 
props.getStringProperty(SimpleLoggerContext.SYSTEM_PREFIX + "charset");
if (charset != null) {
  ps = new PrintStream(os, false, charset);
} else {
  ps = new PrintStream(os);
}

That will need another catch block, but that shouldn't be a big problem to 
figure out.



On Mon, Mar 24, 2014 at 12:20 AM, Matt Sicker <[email protected]> wrote:
From what I can tell, it's when you use OutputStream instead of Writer that you 
need to specify charsets. I think the writers have a more friendly 
configuration mechanism just via Java properties or something. I'm not fully 
sure, actually.


On 23 March 2014 23:09, Ralph Goers <[email protected]> wrote:
For StatusLogger you would then have to add a charset attribute to the 
configuration element wouldn’t you?

Ralph

On Mar 23, 2014, at 7:09 PM, Matt Sicker <[email protected]> wrote:

It's mainly for StatusLogger, but that idea did cross my mind.


On 23 March 2014 21:00, Ralph Goers <[email protected]> wrote:
I’m sorry, I didn’t ask the question correctly.  SimpleLogger doesn’t currently 
accept a charset. Are you planning on adding a new properly to 
SimpleLoggerContext to support this?  I don’t really have an objection but am 
just wondering when other than the platform’s default encoding would want to be 
used. After all, SimpleLogger wasn’t really meant to be what people actually 
used on purpose.

Ralph

On Mar 23, 2014, at 6:01 PM, Matt Sicker <[email protected]> wrote:

It's right there in the docs:
http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html

All characters printed by a PrintStream are converted into bytes using the 
platform's default character encoding. The PrintWriter class should be used in 
situations that require writing characters rather than bytes.


On 23 March 2014 18:54, Ralph Goers <[email protected]> wrote:
How will it improve charset handling?  Currently a charset isn’t configured.

Ralph

On Mar 23, 2014, at 3:58 PM, Matt Sicker <[email protected]> wrote:

Would it be alright to migrate to using PrintWriter instead of PrintStream? 
This improves charset handling, plus Java recommends using Writers over 
OutputStreams for textual content.

-- 
Matt Sicker <[email protected]>




-- 
Matt Sicker <[email protected]>




-- 
Matt Sicker <[email protected]>




-- 
Matt Sicker <[email protected]>



-- 

Bruce Brouwer



-- 
Matt Sicker <[email protected]>

Reply via email to