简体   繁体   中英

Log4j - How can I write only my messages logs to file without other details

I use logger(Log4j) to create my file log program.

log4j.properties file:

# Root logger option
log4j.rootLogger=DEBUG, stdout, file

# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=D:\\WorkSpace\\ToDoList\\src\\log\\log4j-application.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

My class:

import org.apache.log4j.Logger;

@WebServlet("/Login")
public class LoginApp extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private final static Logger logger = Logger.getLogger(LoginApp.class);
    private final static HibernateToDoListDao actions = HibernateToDoListDao.getInstance();

    public LoginApp() 
    {
        super();
    }

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response)
    {           
        try
        {
                logger.info("The user: "+ username+" connect to app.");
                request.getRequestDispatcher("Index.jsp").forward(request, response);
        }
        catch(ToDoListDaoException e)
        {
            System.out.println(e.getMessage());
        }
    }
}

My file log:

2017-01-14 17:14:29 DEBUG AbstractBatcher:418 - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
2017-01-14 17:14:29 DEBUG TwoPhaseLoad:131 - resolving associations for [model.User#1]
2017-01-14 17:14:29 DEBUG TwoPhaseLoad:239 - done materializing entity [model.User#1]
2017-01-14 17:14:29 DEBUG StatefulPersistenceContext:892 - initializing non-lazy collections
2017-01-14 17:14:29 DEBUG ConnectionManager:427 - aggressively releasing JDBC connection

How can i write only my messages logs to file without other details. eg in my class only the line

"logger.info("The user: "+ username +"connect to app.")"

will write to the file.

Thanks

You need to set the package name in log4j configuration file for which you want to enable logging. Your configuration file should look like below. Remember to write your package name in 2 line -

# Root logger option
log4j.rootLogger=ERROR, stdout, file
# Write your package Name here
log4j.logger.packageName=DEBUG, stdout, file

# Redirect log messages to console
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{1}:%L - %m%n

# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=D:\\WorkSpace\\ToDoList\\src\\log\\log4j-application.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM