Specify EST time zone in log4j.xml - java

I am trying to set EST time zone in log4j.xml. Here is my log4j.xml file. Any suggestion exeperts
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="debug" xmlns:xi="http://www.w3.org/2001/XInclude" name="testApp">
<Appenders>
<RollingRandomAccessFile name="AppLogFile" fileName="${sys:myLogDir}/dcs.log" filePattern="${sys:myLogDir}/myApp-%d{yyyy-MM-dd}.log.gz">
<PatternLayout>
<Pattern>%d{ABSOLUTE} [%-10.10t] %-5p %-32.32c{2} %x- %msg%n</Pattern>
</PatternLayout>
<DefaultRolloverStrategy max="14"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<Root level="${sys:Log4jLevel}" additivity="false">
<AppenderRef ref="Console" />
<AppenderRef ref="AppLogFile" />
</Root>
</Loggers>
</Configuration>

Related

How to split catalina.out for tomcat?

I have log4j2.xml properties:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout
pattern="%style{%d{ISO8601}}{black} %highlight{%-5level }[%style{%t}{bright,blue}] %style{%C{1.}}{bright,yellow}: %msg%n%throwable" />
</Console>
<RollingFile name="RollingFile"
fileName="/opt/tomcat/mylogs/logs.log"
filePattern="/opt/tomcat/mylogs/$${date:yyyy-MM}/log-%d{-dd-MMMM-yyyy}-%i.log.gz">
<PatternLayout>
<pattern>%d %p %C{1.} [%t] %m%n</pattern>
</PatternLayout>
<Policies>
<!-- rollover on startup, daily and when the file reaches 50 MegaBytes -->
<OnStartupTriggeringPolicy />
<SizeBasedTriggeringPolicy
size="50 MB" />
<TimeBasedTriggeringPolicy />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<!-- LOG everything at INFO level -->
<Root level="info">
<AppenderRef ref="Console" level="info" />
<AppenderRef ref="RollingFile" level="info" />
<AppenderRef ref="SmtpAppender" level="exception"/>
</Root>
<Logger name="com.kot" level="debug">
<AppenderRef ref="RollingFile"/>
</Logger>
</Loggers>
</Configuration>
But this properteis create logg files on another folder on server: "/opt/tomcat/mylogs/logs.log"
I want to split catalina.out logs. This logs are located on "/opt/tomcat/logs/catalina.out" by default
Also, how to split server logs and application logs?

Log4j2 logging to console instead of files

I am using log4j2 and passing path to following configuration in my java program
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="trace" monitorInterval="30" shutdownHook="disable">
<Properties>
<Property name="folder">.</Property>
<Property name="customFormat">[%d{ISO8601}] [%5p] [%X{loggingId}] - [%t] - [%c] - %m%n%rEx%n</Property>
<Property name="accessFormat">%d{yyyy-MM-dd HH:mm:ss.SSS} %m%n</Property>
</Properties>
<Appenders>
<RollingRandomAccessFile name="access" fileName="${folder}/access.log"
filePattern="${folder}/access.log.%d{MM-dd-yyyy}.log.gz" immediateFlush="false">
<PatternLayout>
<pattern>${accessFormat}</pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="500 MB"/>
</Policies>
<DefaultRolloverStrategy max="10" />
</RollingRandomAccessFile>
<RollingRandomAccessFile name="service" fileName="${folder}/service.log"
filePattern="${folder}/service.%i.log.gz" immediateFlush="false">
<Filters>
<ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
<PatternLayout>
<pattern>${customFormat}</pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="500 MB"/>
</Policies>
<DefaultRolloverStrategy max="3" />
</RollingRandomAccessFile>
<RollingRandomAccessFile name="all" fileName="${folder}/all.log"
filePattern="${folder}/all.%i.log.gz" immediateFlush="false">
<Filters>
<ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
<PatternLayout>
<pattern>${customFormat}</pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="500 MB"/>
</Policies>
<DefaultRolloverStrategy max="2" />
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<AsyncLogger name="com.mysvc.netty.handlers.LoggingHandler" level="error"/>
<AsyncLogger name="org.apache.http" level="info" additivity="false">
<AppenderRef ref="access" />
</AsyncLogger>
<AsyncLogger name="com.mysvc.tns" level="INFO" additivity="false">
<AppenderRef ref="service" />
</AsyncLogger>
<AsyncLogger name="com.mysvc.netty" level="info" additivity="false">
<AppenderRef ref="service" />
</AsyncLogger>
<Root level="info">
<AppenderRef ref="all"/>
</Root>
</Loggers>
</Configuration>
I want to write access logs, service related logs and all other logs in files as specified in my configuration but for some reasons log4j2 is writing everything in my console, I can see all of the required files getting created but file size is 0. What's wrong in my configuration?

Rolling file is not creating the next day and previous day file is being written with new logs

I have implemented log4j2 to log my records each day in a new file. But on next day previous day file is getting new records and old records file is getting archived. Instead of creating a new file with today's date. Once I restart the server, a new file with today's date gets created.
<Appenders>
<RollingFile name="LogToRollingFile"
fileName="logs/validategoods/appHeader-${env:hostName}-${date:yyyy-MM-dd}.log"
filePattern="logs/validategoods/${env:hostName}-${date:yyyy-MM}/appHeader-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout>
<Pattern>%d %p [%t] %m%n</Pattern>
<!-- <Pattern>%d %p %c{1.} [%t] %m%n</Pattern> -->
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="100 MB" />
</Policies>
</RollingFile>
<RollingFile name="LogToRollingFile1"
fileName="logs/validategoods/appPayload-${env:hostName}-${date:yyyy-MM-dd.HH-mm}.log"
filePattern="logs/validategoods/${env:hostName}-${date:yyyy-MM}/appPayload-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout>
<Pattern>%d %p [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" />
<SizeBasedTriggeringPolicy size="100 MB" />
</Policies>
</RollingFile>
<Async name="Async">
<AppenderRef ref="LogToRollingFile" />
</Async>
<Async name="Async">
<AppenderRef ref="LogToRollingFile1" />
</Async>
</Appenders>
<Loggers>
<!-- avoid duplicated logs with additivity=false -->
<Logger name="no.posten.header" level="info" additivity="false">
<AppenderRef ref="LogToRollingFile" />
</Logger>
<Logger name="no.posten.payload" level="info"
additivity="false">
<AppenderRef ref="LogToRollingFile1" />
</Logger>
<Root level="debug">
</Root>
</Loggers>
I want to get a new file created each day without restarting the server.

log4j is logging in the console but not creating a log file

I am using log4j in my project. The project is working fine but it is not creating a log file.
Here is the log4j.xml
<Configuration status="warn">
<Properties>
<Property name="logHome">D:/logs</Property>
</Properties>
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="%-5p: %c - %m%n" />
</Console>
<RollingFile name="rollingFile" immediateFlush="true" fileName="${logHome}/mySample.log" filePattern="${logHome}/mySample-%i.log">
<PatternLayout>
<Pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} |[%t]| %-5p | %c{1} | %L - %m%n</Pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="5 MB" />
</Policies>
<DefaultRolloverStrategy max="10" />
</RollingFile>
</Appenders>
<Loggers>
<Logger name="org.springframework" level="info" includeLocation="true" />
<Logger name="org.hibernate" level="info" includeLocation="true" />
<Logger name="org.project" level="debug" includeLocation="true" />
<Root level="info" includeLocation="true">
<AppenderRef ref="rollingFile" />
<AppenderRef ref="console" />
</Root>
</Loggers>
</Configuration>
Any help is appreciated. Thanks in advance.
I tried all the ways out but nothing worked for me. At the end I had to switch to slf4j.Logger and slf4j.LoggerFactory. With the help of this I was able to generate logs.
Example:
private static final Logger LOGGER=LoggerFactory.getLogger(MyClass.class);

log4j2 writing method and class

I'm using log4j2 in a java program..
this is the line of code where it is initialized
private static final Logger logger = LogManager.getLogger("application-
log");
and this is the configuration file where the format is decided
<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorinterval="30" status="info" strict="true">
<Properties>
<Property name="logApplicativo">../logs/logApplicativo.log</Property>
<Property name="logCdr">../logs/logCdr.log</Property>
</Properties>
<Appenders>
<Console name="STDOUT">
<PatternLayout pattern="%m MDC%X%n"/>
</Console>
<RollingRandomAccessFile name="fileLogApplicativo"
fileName="${logApplicativo}" filePattern="${log-Applicativo}-%d{yyyy-MM-
dd}-%i.log" immediateFlush="false" append="true"
ignoreExceptions="false" >
<PatternLayout>
<pattern>%d [%-6p] %C.%M(%F:%L) - %m%n</pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="5 MB"/>
</Policies>
<DefaultRolloverStrategy max="30"/>
</RollingRandomAccessFile >
<RollingRandomAccessFile name="fileLogCdr" fileName="${logCdr}"
filePattern="${log-Cdr}-%d{yyyy-MM-dd}-%i.log" >
<PatternLayout>
<pattern>%d %-5p %c{2} - %m%n</pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="5 MB"/>
</Policies>
<DefaultRolloverStrategy max="30"/>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<AsyncRoot level="error">
<AppenderRef ref="STDOUT"/>
</AsyncRoot>
<AsyncLogger name="application-log" level="debug" additivity="false">
<AppenderRef ref="fileLogApplicativo" level="debug"/>>
</AsyncLogger>
<AsyncLogger name="cdr-log" level="debug" additivity="false">
<appender-ref ref="fileLogCdr" level="debug"/>
</AsyncLogger>
</Loggers>
I do not understand why, but class name, code name, line code arent printed. Probably the problem is trivial but I'm going crazy from one day.
Thank you all
If you're using asynchronous loggers or asynchronous appenders try adding includeLocation="true" to your logger or appender configuration.
You can read more about it in the log4j2 manual

Categories

Resources