Wait which stream stuff? The logger stream? Because that's totally separate. I was talking about the underlying OutputStream used in SimpleLogger/StatusLogger. I think this would be useful in regions where UTF-8 is not widely used (e.g., Asia).
On 24 March 2014 22:16, Gary Gregory <[email protected]> wrote: > 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 > Date:03/24/2014 22:02 (GMT-05:00) > To: Log4J Developers List > 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<http://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html> >>>>> 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]> > -- Matt Sicker <[email protected]>
