Reputation: 111
The application is running in tomcat
and has it own logger using org.apache.commons.logging.Log and org.apache.commons.logging.LogFactory.
The logs are getting logged at location specified in log4j.properties
file, the location is as follows.
log4j.appender.logger.File=${catalina.base}/logs/applicationlogs.log
The logs are simultaneously added in following file.
/opt/apache-tomcat-8.0.26/logs/catalina.out
How to stop the application logs from getting logged in catalina.out ?
Upvotes: 10
Views: 34584
Reputation: 12757
You can try following to disable writing to catalina.out
:
Locate "CATALINA_OUT" and replace the path with "/dev/null":
/dev/null
in Linux is a null device file. This will discard anything written to it.
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out // Original Location
CATALINA_OUT=/dev/null // replace path to /dev/null
Upvotes: 1
Reputation: 9839
Just changing
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
To
CATALINA_OUT= /dev/null
In catalina.sh
is not enough because the CATALINA_OUT
variable will be used later in the script and that will cause an error to be thrown (aborting the startup).
What I've done instead was, I went to the command lines themselves and edited them so that the output itself will be redirected to /dev/null
(In Tomcat 9 it's in the if
block in line ~447)
$_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
-D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
-classpath "\"$CLASSPATH\"" \
-Djava.security.manager \
-Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\"" \
-Dcatalina.base="\"$CATALINA_BASE\"" \
-Dcatalina.home="\"$CATALINA_HOME\"" \
-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_OUT" 2>&1 "&"
I've set the stdout stream to /dev/null
$_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
-D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
-classpath "\"$CLASSPATH\"" \
-Djava.security.manager \
-Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\"" \
-Dcatalina.base="\"$CATALINA_BASE\"" \
-Dcatalina.home="\"$CATALINA_HOME\"" \
-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
org.apache.catalina.startup.Bootstrap "$@" start \
>> /dev/null 2>&1 "&"
Upvotes: 0
Reputation: 81
I believe the recommended way to "augment" catalina.sh (catalina.bat on Windows) is to:
Upvotes: 8
Reputation: 3444
You will see log file created as per your log configuration.
Upvotes: 3
Reputation: 3593
You can try to do this:
"$CATALINA_BASE"/bin/catalina.sh
fileCATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
Don't forget to restart tomcat.
And as suggested in comments, to block writing to catalina.out
entirely, set CATALINA_OUT=/dev/null
in catalina.sh
.
Upvotes: 19
Reputation: 49
If your application is using a console appender, then those logs will go to catalina.out. You might want to check that in your application. To disable logging to catalina.out, you can check discussion: here
Upvotes: 4
Reputation: 165
I'm using tomcat 7.0.50 and I've done following configuration.
To stop the application to log into catalina.out, you can do it by removing the handler.
This can be achieved by editting conf/logging.properties
and changing:
.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
to
.handlers = 1catalina.org.apache.juli.FileHandler
Hope this helps. Let me know if I'm missing something.
Upvotes: 4