How to copy the entire content of a text file and mail it using java mail API?

北城余情 提交于 2019-12-13 08:30:05

问题


I have a Log File log.txt and it is being generated by log4j Now I need to copy the Entire content of the log file and send the copied data as an Email.

below are my codes: Lo4j Properties:

#Log to Console as STDOUT
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} \
%-5p %c %3x - %m%n
#Log to file FILE
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=D:\logfile.log
log4j.appender.file.DatePattern='.'dd/MM/yyyy
log4j.appender.file.append=true
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern= %m%n
# LOG4J daily rolling log files configuration
log4j.rootLogger=DEBUG, RollingAppender
log4j.appender.RollingAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.RollingAppender.File=D:\logfile.log
log4j.appender.RollingAppender.DatePattern='.'yyyy-MM-dd
log4j.appender.RollingAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.RollingAppender.layout.ConversionPattern= %m%n
#CONFIGURE SMTP
log4j.appender.email=org.apache.log4j.net.SMTPAppender
log4j.appender.email.SMTPHost=smtp.gmail.com
log4j.appender.email.SMTPUsername=ilavarasan.mbsjgr@gmail.com
log4j.appender.email.SMTPPassword=Flower@123
log4j.appender.email.From=ilavarasan.mbsjgr@gmail.com
log4j.appender.email.To=ilavarasan.mtss@gmail.com
log4j.appender.email.Subject=Log of messages
log4j.appender.email.BufferSize=1
log4j.appender.email.EvaluatorClass=TriggerLogEvent
log4j.appender.email.layout=org.apache.log4j.PatternLayout
log4j.appender.email.layout.ConversionPattern=%m
# INFO level will be logged
log4j.logger.comparexmlf1.mailer1 = INFO, email
# turn off additivity
log4j.logger.comparexmlf1.mailer1 = false

a piece of java code for Mail :


MimeMessage message = new 
MimeMessage(session);                                   
m_toterr=validatexml.Total_err;
message.setFrom(new InternetAddress(from));   
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to1));
message.setSubject("RE : CAR Validation Report at :
"+dateFormat.format(cal.getTime())); 
message.addHeaderLine("line");
MimeHeader header1=new MimeHeader("Content-Type","test/html");
line10.setContent(htmlBody,"text/html");
message.setContent(htmlBody, "text/html; charset=ISO-8859-1");

A piece of java code for Log4j SMTP Appender

public class Mailer1 {
private static final Logger logger = Logger.getLogger(Mailer1.class);

public void logMail(String mailString) {
logger.info(mailString);
}
}

Tried both my own app to send the mail and used log4j appender.But both not copying the log file and not throwing the emails.

Can any one help me on this? Thanks in Advance.


回答1:


First of all you have to get the FileAppender from your log4j configuration

String pathLogFile = "";
Enumeration enumeration = Logger.getRootLogger().getAllAppenders();
while ( enumeration.hasMoreElements() ){
   Appender appender = (Appender) e.nextElement();
   if ( appender instanceof FileAppender ){
      pathLogFile  = ((FileAppender)appender).getFile(); //here you get the path
      break;
   }
}

Now that you got the path for your log file, read all lines:

StringBuffer sb = new StringBuffer();
FileInputStream fstream = new FileInputStream(pathLogFile);
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));

String singleLine;
while ((singleLine = br.readLine()) != null) {
  sb.append(singleLine + "\n");
}
br.close();
String allLines = sb.toString();

And then compose the mail with the content of the file:

message.setContent(allLines);

Update (get only lines that begin with...):

String singleLine;
while ((singleLine = br.readLine()) != null) {
  if(singleLine.startsWith("Err :")) {
    sb.append(singleLine + "<br>");
  }
}


来源:https://stackoverflow.com/questions/34942481/how-to-copy-the-entire-content-of-a-text-file-and-mail-it-using-java-mail-api

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!