independent hibernate log file using log4j


General J2EE: independent hibernate log file using log4j

  1. independent hibernate log file using log4j (2 messages)

    Hi, This is a beginner question and may be answered elsewhere please let me know where. Objective: To have independent log files at debug level for my app logs and Hibernate log data. I would like to have multiple log files that only allow certain data to be added at the debug level. e.g. my log file rollingLog.txt should only have entries from my classes and hibernateLog.txt should have log entries only from their classes org.hibernate. I do not want the Hibernate debug log data to be written to my log file. Problem: Using my current file if i set the logging level to debug for org.hibernate my application log file get written to by hibernate log data. I can not find a way to have both loggers set to debug and have their log data written to independent files. My current setup is to have the Hibernate log set to WARN so its data is less but i would really like to see DEBUG level data. Thank you in advance! Additional data and config: How i acquire the log object in code private static final Log _heartbeat = LogFactory.getLog("AppLogging"); private static final Log _log = LogFactory.getLog(MyObject.class); file contents: log4j.rootLogger = DEBUG, CONSOLE, com.mycompany, org.hibernate, A2 # Categories = WARN = DEBUG # CONSOLE is set to be ConsoleAppender sending its output to System.out log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.conversionPattern = [%p] [%d{yyyy-MM-dd @ HH:mm:ss}] [%t|%c{1}] %m%n log4j.appender.CONSOLE.threshold = INFO = ALL = WARN = TRUE # Hibernate is set to be independant roll file = org.apache.log4j.RollingFileAppender = logs/hibernateLogFile.txt # Set the maximum log file size (use KB, MB or GB) = 4096KB # Set the number of log files (0 means no backup files at all) = 10 # Append to the end of the file or overwrites the file at start. = false = org.apache.log4j.PatternLayout = [%p] [%d{yyyy-MM-dd @ HH:mm:ss}] [%t|%c{1}] %m%n = WARN #My application = org.apache.log4j.RollingFileAppender = logs/rollingLogFile.txt = 4096KB = 10 = org.apache.log4j.PatternLayout = [%p] [%d{yyyy-MM-dd @ HH:mm:ss}] [%t|%c{1}] %m%n = TRUE # An extra category to a log file - HEARTBEAT ONLY log4j.appender.WarnAppender = org.apache.log4j.RollingFileAppender log4j.category.AppLogging = A2 log4j.appender.A2.Threshold = INFO log4j.appender.A2 = org.apache.log4j.RollingFileAppender log4j.appender.A2.File = logs/heartbeat.txt log4j.appender.A2.MaxFileSize = 4096KB log4j.appender.A2.MaxBackupIndex = 1 log4j.appender.A2.layout = org.apache.log4j.PatternLayout log4j.appender.A2.layout.ConversionPattern = [%p] [%d{yyyy-MM-dd @ HH:mm:ss}] [%t|%c{1}] %m%n
  2. This is a log4j configuration for : - DEBUG level for only your classes logs into mycompanyLogFile.txt - DEBUG level for only hibernate logs into hibernateLogFile.txt - ERROR level for only other packages logs into errorsLogFile.txt log4j.rootLogger = ERROR, errorsLog # Hibernate logs = DEBUG, hibernateLog = false # my company logs = DEBUG, mycompanyLog = false # HIBERNATE APPENDER log4j.appender.hibernateLog = org.apache.log4j.RollingFileAppender log4j.appender.hibernateLog.File = logs/hibernateLogFile.txt # Set the maximum log file size (use KB, MB or GB) log4j.appender.hibernateLog.MaxFileSize = 4096KB # Set the number of log files (0 means no backup files at all) log4j.appender.hibernateLog.MaxBackupIndex = 10 # Append to the end of the file or overwrites the file at start. log4j.appender.hibernateLog.Append = false log4j.appender.hibernateLog.layout = org.apache.log4j.PatternLayout log4j.appender.hibernateLog.layout.ConversionPattern = [%p] [%d{yyyy-MM-dd @ HH:mm:ss}] [%t|%c{1}] %m%n #MY APPLICATION APPENDER log4j.appender.mycompanyLog = org.apache.log4j.RollingFileAppender log4j.appender.mycompanyLog.File = logs/mycompanyLogFile.txt log4j.appender.mycompanyLog.MaxFileSize = 4096KB log4j.appender.mycompanyLog.MaxBackupIndex = 10 log4j.appender.mycompanyLog.layout = org.apache.log4j.PatternLayout log4j.appender.mycompanyLog.layout.ConversionPattern = [%p] [%d{yyyy-MM-dd @ HH:mm:ss}] [%t|%c{1}] %m%n # ERRORS APPENDER log4j.appender.errorsLog = org.apache.log4j.RollingFileAppender log4j.appender.errorsLog.File = logs/errorsLogFile.txt log4j.appender.errorsLog.MaxFileSize = 4096KB log4j.appender.errorsLog.MaxBackupIndex = 1 log4j.appender.errorsLog.layout = org.apache.log4j.PatternLayout log4j.appender.errorsLog.layout.ConversionPattern = [%p] [%d{yyyy-MM-dd @ HH:mm:ss}] [%t|%c{1}] %m%n I hope this helps you. Fabien
  3. Hi Fabian,

                The solution you provided is indeed helpful. But after applying the same to my project, I can still see the SQL printing on my console rather than to the configured hibernate file. My looks like following. I am trying to print all the hibernate logs to HIBERNATE.log file.

    log4j.rootCategory=ERROR, ROLLOVER

    log4j.appender.ROLLOVER.layout.ConversionPattern=%d{dd MMM yyy HH:mm:ss},%-6p %C:%M:%L %m %n, hibernateLog
    # Set the number of log files (0 means no backup files at all)
    log4j.appender.hibernateLog.MaxBackupIndex = 10
    log4j.appender.hibernateLog.layout.ConversionPattern = [%p] [%d{yyyy-MM-dd @ HH:mm:ss}] [%t|%c{1}] %m%n

    Thank you in advance.