= Logging SVNKit operations = If you experience problems that you think are related to [[SVNKit]], it is always a good idea to post a bug report into [[http://svnkit.com/tracker/|SVNKit Issue Tracker]]. To provide more information with the bug report, please consider attaching [[SVNKit]] log file to it. Below you will find detailed instructions on how to get [[SVNKit]] log files. <> == SVNKit is used as a library in a standalone application == By default [[SVNKit]] operations logging is switched off. To enable it, you should replace the contents of the {{{JAVA_HOME/jre/lib/logging.properties}}} file with the contents of the {{{logging.properties.disabled}}} file that you can find in your "standalone" archive or in the {{{svnkit-cli/scripts}}} directory in case you've checked out the [[SVNKit]] sources. Or when launching the Java VM you can use the following system property: {{{ $java -Djava.util.logging.config.file=path/to/logging.properties.disabled }}} The {{{logging.properties.disabled}}} file contains several system properties which is used to control the log level. Every property corresponds to different area of [[SVNKit]] operations: * svnkit.level - sets the log level of basic operations * svnkit-network.level - sets the log level for network operations, it enables or disables network tracing * svnkit-fsfs.level - sets the log level for operations with FSFS repository backend * svnkit-wc.level - sets the log level for operations with working copy * svnkit-cli.level - set the log level for operations performed by command line interface layer Up to your needs you can specify the following values for every property above: * SEVERE - the level for serious failures logging * INFO - the level for warnings logging * FINE (default) - the level for not detailed logging * FINER - the level for more detailed logging * FINEST - the level for full logging You may find an [[SVNKit]] log file at {{{USER_HOME/svnkit.0.log}}}. <> == SVNKit is used as Eclipse plugin (works for Subclipse extension as well) == When used within [[http://www.eclipse.org|Eclipse]] [[SVNKit]] logs its operation using [[http://www.eclipse.org|Eclipse]] built-in logging facilities. Logging is turned off by default. To enable [[SVNKit]] logging please do the following: 1. Copy {{{ECLIPSE_HOME/plugins/org.tmatesoft.svnkit_version/.options}}} file to {{{ECLIPSE_HOME}}} directory 1. Start [[http://www.eclipse.org|Eclipse]] with -debug command line argument: {{{ $eclipse -debug }}} 1.#3 In [[http://www.eclipse.org|Eclipse]], open standard 'Error Log' view - it will contain detailed log of [[SVNKit]] operations that you may export to a file. {{{ECLIPSE_HOME/plugins/org.tmatesoft.svnkit_version/.options}}} is a file in Java properties file format, with key=true or key=false pair per line. It contains following options with ''boolean'' values you can specify: * {{{org.tmatesoft.svnkit/debug}}} - enables or disables [[SVNKit]] logging * {{{org.tmatesoft.svnkit/debug/error}}} - enables or disables printing error messages to the 'Error Log' output Note: if this option is turned on error messages will be shown in the 'Error Log' output independently of whether {{{org.tmatesoft.svnkit/debug}}} is turned on or not * {{{org.tmatesoft.svnkit/debug/warning}}} - enables or disables printing warnings to the 'Error Log' output * {{{org.tmatesoft.svnkit/debug/info}}} - enables or disables printing debug information to the 'Error Log' output * {{{org.tmatesoft.svnkit/debug/fine}}} - enables or disables printing all messages to the 'Error Log' output * {{{org.tmatesoft.svnkit/debug/trace}}} - enables or disables tracing of network operations Note: if this option is turned on network traffic will be shown in the 'Error Log' output independently of whether {{{org.tmatesoft.svnkit/debug}}} is turned on or not == Setting a custom logger (for debug logging) == When you're using [[SVNKit]] in your application it is not always an option to let [[SVNKit]] use JDK logging API. Instead you may like to have a fine-grained control over the way [[SVNKit]] logs its operations. The solution is to provide [[SVNKit]] with a custom logger class that should extend the [[http://svn.svnkit.com/repos/svnkit/branches/1.3.x/svnkit/src/main/java/org/tmatesoft/svn/util/SVNDebugLogAdapter.java|SVNDebugLogAdapter]] class. The code below demonstrates how it could be done. {{{#!java ... import org.tmatesoft.svn.util.ISVNDebugLog; import org.tmatesoft.svn.util.SVNDebugLog; import org.tmatesoft.svn.util.SVNDebugLogAdapter; import org.tmatesoft.svn.util.SVNLogType; ... /* * Register your logger for different kinds of operations (operations with working copy, network operations). */ public static void initSVNKitLogger() { ISVNDebugLog customLogger = new CustomSVNKitLogger(); SVNDebugLog.setDefaultLog(customLogger); } private static class CustomSVNKitLogger extends SVNDebugLoggerAdapter { /* Define methods to handle log messages * as you wish. */ public void log(SVNLogType logType, byte[] data, Level logLevel) { /* * Used to log all data received or transmitted * over network */ ... } public void log(SVNLogType logType, String message, Level logLevel) { /* * Used to log messages with different log levels */ ... } public void log(SVNLogType logType, Throwable th, Level logLevel) { /* * Used to log exceptions with different log levels */ ... } } ... initSVNKitLogger(); ... }}} Note: One have to set up a custom logger before any other calls are made to [[SVNKit]], otherwise default logging will be used - i.e. [[http://svn.svnkit.com/repos/svnkit/branches/1.3.x/svnkit/src/main/java/org/tmatesoft/svn/core/internal/util/DefaultSVNDebugLogger.java|DefaultSVNDebugLogger]]. The [[#debug_logs|first section]] gives information how to obtain its log files.