You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by "Gary Gregory (JIRA)" <ji...@apache.org> on 2016/10/10 18:27:20 UTC
[jira] [Commented] (LOG4J2-1636) Console Appender does not pick up
Oracle Java 8's sun.stdout.encoding and sun.stderr.encoding
[ https://issues.apache.org/jira/browse/LOG4J2-1636?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15563069#comment-15563069 ]
Gary Gregory commented on LOG4J2-1636:
--------------------------------------
Please check Uploading: https://repository.apache.org/content/repositories/snapshots/ or Git master for a fix.
If you do not specify a {{Layout}} in your {{Console}} Appender, then you will get a default layout built by the Console Appender which will use the {{sun.stdout.encoding}} value if it is present. If {{sun.stdout.encoding}} is absent, then the appender uses {{Charset.defaultCharset()}}.
This is what is still troublesome:
- {{PatternLayout}} uses {{Charset.defaultCharset()}} for the default, which makes sense in the big picture.
- If you specify a {{Layout}} without a {{charset}} field, then the {{Charset.defaultCharset()}} kicks in.
- When a configuration is built, a {{PatternLayout}} does not know it is being built in a {{Console}} Appender. The {{Layout}} gets built first, then the Appender.
- What if you really want to use {{Charset.defaultCharset()}} in your configuration no matter what {{sun.stdout.encoding}} says?
I'm not sure how to solve this cleanly.
Suggestions welcome.
> Console Appender does not pick up Oracle Java 8's sun.stdout.encoding and sun.stderr.encoding
> ----------------------------------------------------------------------------------------------
>
> Key: LOG4J2-1636
> URL: https://issues.apache.org/jira/browse/LOG4J2-1636
> Project: Log4j 2
> Issue Type: Bug
> Components: Appenders, Layouts
> Environment: Windows
> Reporter: Eldar Gabdullin
> Assignee: Gary Gregory
>
> The Oracle Java 8 platform supports two system properties to configure the System console: sun.stdout.encoding and sun.stderr.encoding.
> ----
> Default log4j configuration prints to console using platform's default encoding, however that's not what standard windows console expects.
> I.e.
> {code}
> System.out.println("Поехали"); // works just fine
> System.out.write("Поехали!\n".getBytes(Charset.defaultCharset())); // characters are messed up
> log.info("Поехали"); // messed up in the same way
> {code}
> This happens not just on one machine, but on all Windows desktops and servers in our organization.
> Can we have out of the box Layout/Appender which prints directly to System.out/err?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org