Previously developed systems do not have a separate log management, all the log unified output to a file in tomcat background, a few days is several G, now to the overall increase of a log4j management log function, in fact, the information on the Internet is many. The configuration of the message also has, but the specific how to send, garbled problem how to solve that less.
Use JavaMail to send mail, you need to import package Mail.jar and Activation.jar These two packages, otherwise it is impossible to send mail, the bottom of the Green Line in the configuration file is sent to two recipients AC and AE.
Here will appear the Chinese garbled problem, mainly has two aspects of garbled, one is the title garbled, the second is the text garbled. Below specify these two kinds of garbled solution.
First, the title garbled
The title of the LOG4J log message is set in the configuration file Log4j.properties, as follows
Log4j.appender.mail=org.apache.log4j.net.smtpappender
Log4j.appender.mail.threshold=fatal
log4j.appender.mail.buffersize=10
Log4j.appender.mail.from=ab@163.com
Log4j.appender.mail.smtphost=smtp@163.com
Log4j.appender.mail.subject= log4j remind you that a critical error has occurred in the system
Log4j.appender.mail.to=ac @163.com,ae@163.com
Log4j.appender.mail.layout=com.sun.definelayout
Log4j.appender.mail.layout.locationinfo=true
Gray Line is the title, log4j profile default read mode is ISO-88591, encountered in Chinese will be garbled, we can put this profile log4j.properties with JDK tool native2asii to convert the encoding mode.
Command: native2asii log4j.properties log4jxx.properties
This log4jxx.properties renamed as Log4j.properties instead of the original log4j.properties on the OK.
After the gray line is encoded:
log4j.appender.mail.subject=log4j/u63d0/u9192/u60a8/uff1a/u7cfb/u7edf/u53d1/u751f/u4e86/u4e25/u91cd/u9519/ U8bef
Second, the text garbled
Text garbled, the solution is relatively simple. Read the log4j source class Smtpappender, we can see that the Sendbuffer () method has this sentence:
Part.setcontent (Sbuf.tostring (), Layout.getcontenttype ());
We continue to trace the discovery that layout is the layout pattern for the layout attribute in the configuration file. However, these layout patterns are inherited from layout, and ContentType can only be obtained through the getContentType method and cannot be modified. All layout modes getContentType method return is "Text/plain";
To handle Chinese garbled, we can write a layout pattern. If you want to use Htmllayout, we'll write a htmllayout subclass that overrides the Htmllayout getContentType method. If I want to use Org.apache.log4j.HTMLLayout. We can write a Definelayout class with the following code:
Package Com.sun;
Import Org.apache.log4j.HTMLLayout;
public class Definelayout extends htmllayout{
Public String getContentType () {
return "TEXT/HTML;CHARSET=GBK";
}
}
The corresponding configuration file settings are shown in yellow lines.
Http://www.blogjava.net/henry1451/articles/205358.html