| 6 | | '''Note:''' If you are using a Python version older than 2.3, the Trac logging mechanism will be silently disabled. |
| 7 | | |
| 8 | | Logging is configured in the {{{[logging]}}} section in [wiki:TracIni trac.ini]. |
| 9 | | |
| 10 | | == Python 2.2 Workaround == |
| 11 | | If you are using Python 2.2, however, note that the logging package from Python 2.3 works perfectly under 2.2 as well; you can just copy the entire {{{logging}}} directory from the Python 2.3 library into the Python 2.2 lib directory. Perhaps not the most elegant solution, but it works. |
| 12 | | |
| | 6 | Logging is configured in the `[logging]` section in [wiki:TracIni#logging-section trac.ini]. |
| 15 | | * '''none''' -- Suppress all log messages. |
| 16 | | * '''file''' -- Log messages to a file, specified with the ''log_file'' directive in [wiki:TracIni trac.ini]. |
| 17 | | * '''stderr''' -- Output all log entries to console ([wiki:TracStandalone tracd] only). |
| 18 | | * '''syslog''' -- (UNIX) Send messages to local syslogd via named pipe '/dev/log'. |
| 19 | | * '''winlog''' -- (Windows) Use the system's NT eventlog for Trac logging. |
| | 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]. Relative paths in `log_file` are resolved relative to the `log` directory of the environment. |
| | 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. |
| 24 | | The levels are: |
| 25 | | * ''CRITICAL'' -- Log only the most critical, typically fatal, messages. |
| 26 | | * ''ERROR'' -- Request failures, bugs and errors. |
| 27 | | * ''WARN'' -- Warnings, non-interrupting events. |
| 28 | | * ''INFO'' -- Diagnostic information, log information about all requests. |
| 29 | | * ''DEBUG'' -- Development messages, profiling, etc. Not fit for human consumption. |
| | 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 | }}} |