Spring Boot console color - java

When i run the springboot application i get the console log color in red. I have tried to change the colors by addingspring.output.ansi.enabled=always in the application.properties and added a logback.xml file as well, but it didn't work.
this is my logback.xml file:
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="STDOUT" />
</root>
</configuration>
this is the console color
what did i miss? any suggestions ?

When you add logback.xml is not enough just to set spring.output.ansi.enabled=ALWAYS but also need to use the %clr conversion word in your logging pattern. Example, if the logging pattern was previously logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level - %msg%n now it could instead be entirely colored as logging.pattern.console=%clr(%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level - %msg%n) or to color just the log-level in console logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} $clr(%-5level) - %msg%n
Here is example of logback.xml file that will give colored output:
<configuration debug="true">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- On Windows machines setting withJansi to true enables ANSI
color code interpretation by the Jansi library. This requires
org.fusesource.jansi:jansi:1.8 on the class path. Note that
Unix-based operating systems such as Linux and Mac OS X
support ANSI color codes by default. -->
<withJansi>true</withJansi>
<encoder>
<pattern>[%thread] %highlight(%-5level) %cyan(%logger{15}) - %msg %n</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="STDOUT" />
</root>
</configuration>

Related

logback line number is not showing up in logs

I am using logback 1.2.3 . My configuration looks like below
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<Target>System.out</Target>
<encoder>
<pattern>%p [%d{yyyy-MM-dd HH:mm:ss,SSS}] %c{3}:[%C{1}:%M:%L] - [%t] - %m%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
But I am not seeing the line number in my logs
INFO [2018-01-12 07:06:54] c.v.s.f.FlowStoreWarmer:[?:?:?] - [FlowStoreWarmer_flow_cache_warmup_thread] - no work to do for cid 19099
Can some one let me know what is going wrong?
Change your encoder as below:
<encoder>
<pattern>%p [%d{yyyy-MM-dd HH:mm:ss,SSS}] %c{3}:[%C{1}:%M:%L] - [%t][%file:%line] - %m%n</pattern>
</encoder>
[%file:%line] means show source file name and line number.

Can we log mapreduce programs using logback.xml?

Is it possible to log a mapreduce program using slf4j logback.xml ? I have tried logging a mapreduce program using logback.xml.But nothing had logged into console.
My logback.xml:
===============
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
Can anyone suggest me on this issue ...
Thanks,in advance.

How can I configure logback conf to send all messages to stderr?

Recently added some println output to my program...
and now dont want logback INFO messages merging with them.
How can I get all messages to stderr ?
Create appender and attach all logs for it:
<appender name="STDERR" class="ch.qos.logback.core.ConsoleAppender">
<target>System.err</target>
<encoder>
<pattern>%date [%thread] - 5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<logger name="org.apache" level="INFO ">
<appender-ref ref="STDERR"/>
</logger>
All org.apache class logs(that uses slf4j) will be directed to System.err
Use a ConsoleAppender with the target attribute set to System.err. See http://logback.qos.ch/manual/appenders.html#ConsoleAppender for details.
Something like this in your logback.xml should work:
<configuration>
<appender name="STDERR" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<target>System.err</target>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="STDERR" />
</root>
</configuration>

Bizarre "18 chars" LOGBack behaviour

This is my first time using Logback - normally use log4j - been forced into it by a dependency.
I used the online converter for log4j.properties --> logback.xml.
When I run the application, all I get are the first 18 chars of any log line, without a newline at the end. The resulting output, both on the console and in the log file is:
16:32:00.537 (main16:32:00.537 (main16:32:00.537 (main16:32:00.537
(main16:32:00.537 (main16:32:00.537 (main16:32:00.537 (main16:32:00.537 (main
What on earth could possibly be causing this?
The logback.xml is
<configuration>
<appender name="xyzzy" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>xyzzy.log</File>
<encoder>
<charset>UTF-8</charset>
<pattern>%d{HH:mm:ss.SSS} (%t) %-5p [%c{36}] - %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>xyzzy.log.%d</fileNamePattern>
</rollingPolicy>
</appender>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<charset>UTF-8</charset>
<pattern>%d{HH:mm:ss.SSS} (%t) [%c{36}] %msg%n</pattern>
</encoder>
</appender>
<logger name="com.package" level="DEBUG"/>
<logger name="org.apache.http.client.protocol.ResponseProcessCookies" level="ERROR"/>
<root level="WARN">
<appender-ref ref="xyzzy"/>
<appender-ref ref="console"/>
</root>
</configuration>
I don't know LOGBack but, according to the documentation,
I'm pretty sure that
(%t)
should be
[%t]
and it is exactly the point where your pattern breaks...
Try then with:
<pattern>%d{HH:mm:ss.SSS} [%t] %-5p [%c{36}] - %msg%n</pattern>
[...]
<pattern>%d{HH:mm:ss.SSS} [%t] [%c{36}] %msg%n</pattern>
assuming all the rest is fine...
In logback, parenthesis in within the pattern string serve as grouping tokens. They need to be escaped.

Redirecting logs for JUL to logback using SLF4J LevelChangePropagator fails

I'm redirecting all logs meant for JUL to logback using jul-to-slf4j. But it works if I use the SLF4JBridgeHandler approach but I cannot see the logs getting written when I use more performant LevelChangePropagator approach by adding following lines to config files(logback.xml & logback-test.xml):
<configuration debug="true">
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"/>
.......
</configuration>
No logs are getting written.
Edit:
Here is what my full config file looks like:
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -> %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>c:/dev/logs_test/log_01.log</file>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -> %msg%n</pattern>
</encoder>
</appender>
<logger name="px10" level="TRACE"/>
<root level="debug">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
</configuration>
Tried with JSF(Myfaces 2.1.8) App on Glassfish 3.1.1
Have your tried setting the level of JSF (MyFaces) loggers in your logback.xml config?
<configuration debug="false">
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"/>
<logger name="org.apache.myfaces" level="DEBUG"/>
</configuration>
LevelChangePropagator does not do anything unless there level changes to propagate. The fact that logging in other parts of your application work as you expect, only means that those parts are configured correctly for logback, but not necessarily j.u.l. For MyFaces you want to configure j.u.l. by propagating your logback configuration via LevelChangePropagator.

Categories