|   | 1 | = Trac Logging =  | 
                  
                          |   | 2 | [[TracGuideToc]]  | 
                  
                          |   | 3 |   | 
                  
                          |   | 4 | Trac supports logging of system messages using the standard [http://docs.python.org/lib/module-logging.html logging module] that comes with Python.  | 
                  
                          |   | 5 |   | 
                  
                          |   | 6 | Logging is configured in the `[logging]` section in [wiki:TracIni#logging-section trac.ini].  | 
                  
                          |   | 7 |   | 
                  
                          |   | 8 | == Supported Logging Methods ==  | 
                  
                          |   | 9 |   | 
                  
                          |   | 10 | The log method is set using the `log_type` option in [wiki:TracIni#logging-section trac.ini], which takes any of the following values:  | 
                  
                          |   | 11 |   | 
                  
                          |   | 12 |  '''none'':: Suppress all log messages.  | 
                  
                          |   | 13 |  '''file''':: Log messages to a file, specified with the `log_file` option in [wiki:TracIni#logging-section trac.ini].   | 
                  
                          |   | 14 |  '''stderr''':: Output all log entries to console ([wiki:TracStandalone tracd] only).  | 
                  
                          |   | 15 |  '''syslog''':: (UNIX) Send all log messages to the local syslogd via named pipe `/dev/log`. By default, syslog will write them to the file /var/log/messages.  | 
                  
                          |   | 16 |  '''eventlog''':: (Windows) Use the system's NT Event Log for Trac logging.  | 
                  
                          |   | 17 |   | 
                  
                          |   | 18 | == Log Levels ==  | 
                  
                          |   | 19 |   | 
                  
                          |   | 20 | The verbosity level of logged messages can be set using the `log_level` option in [wiki:TracIni#logging-section trac.ini]. The log level defines the minimum level of urgency required for a message to be logged, and those levels are:  | 
                  
                          |   | 21 |   | 
                  
                          |   | 22 |  '''CRITICAL''':: Log only the most critical (typically fatal) errors.  | 
                  
                          |   | 23 |  '''ERROR''':: Log failures, bugs and errors.   | 
                  
                          |   | 24 |  '''WARN''':: Log warnings, non-interrupting events.  | 
                  
                          |   | 25 |  '''INFO''':: Diagnostic information, log information about all processing.  | 
                  
                          |   | 26 |  '''DEBUG''':: Trace messages, profiling, etc.  | 
                  
                          |   | 27 |   | 
                  
                          |   | 28 | Note that starting with Trac 0.11.5 you can in addition enable logging of SQL statements, at debug level. This is turned off by default, as it's very verbose (set `[trac] debug_sql = yes` in TracIni to activate).  | 
                  
                          |   | 29 |   | 
                  
                          |   | 30 | == Log Format ==  | 
                  
                          |   | 31 |   | 
                  
                          |   | 32 | Starting with Trac 0.10.4 (see [trac:#2844 #2844]), it is possible to set the output format for log entries. This can be done through the `log_format` option in [wiki:TracIni#logging-section trac.ini]. The format is a string which can contain any of the [http://docs.python.org/lib/node422.html Python logging Formatter variables]. Additonally, the following Trac-specific variables can be used:  | 
                  
                          |   | 33 |  '''$(basename)s''':: The last path component of the current environment.  | 
                  
                          |   | 34 |  '''$(path)s''':: The absolute path for the current environment.  | 
                  
                          |   | 35 |  '''$(project)s''':: The originating project's name.  | 
                  
                          |   | 36 |   | 
                  
                          |   | 37 | Note that variables are identified using a dollar sign (`$(...)s`) instead of percent sign (`%(...)s`).  | 
                  
                          |   | 38 |   | 
                  
                          |   | 39 | The default format is:  | 
                  
                          |   | 40 | {{{  | 
                  
                          |   | 41 | log_format = Trac[$(module)s] $(levelname)s: $(message)s  | 
                  
                          |   | 42 | }}}  | 
                  
                          |   | 43 |   | 
                  
                          |   | 44 | In a multi-project environment where all logs are sent to the same place (e.g. `syslog`), it makes sense to add the project name. In this example we use `basename` since that can generally be used to identify a project:  | 
                  
                          |   | 45 | {{{  | 
                  
                          |   | 46 | log_format = Trac[$(basename)s:$(module)s] $(levelname)s: $(message)s  | 
                  
                          |   | 47 | }}}  | 
                  
                          |   | 48 |   | 
                  
                          |   | 49 | ----  | 
                  
                          |   | 50 | See also: TracIni, TracGuide, TracEnvironment  |