# Trace configuration. Following rules are used :
# - configuration is processed from top to bottom
# - there is two kind of sections allowed : "database" and "services"
# - parameters at default section are used for all databases or services
# - only one default section for each kind is allowed
# - after processing of default database section, search is continued
# - if database name matches pattern, options are immediately applied and
#   search does not continue
#
# Pattern is either database name without path or "SIMILAR TO"-based regular
# expression which is matched against fully qualified database path name.
#
# For log file name Sed syntax for substitutions is supported.
# I.e. \0 - whole matched string, \1 ... \9 - parenthesis subexpressions. 
# \\ is backslash.
#
# String values should be enclosed into (any kind of) quotes if contains 
# spaces embedded, for example:
# log_filename 'C:\\Documents and Settings\\Firebird\\My Documents\\trace.log'
# include_filter "Database Stats"
#
# To enter curvy brackets { } somewhere in a configuration dup them: {{ }}.
# For example - to enter this regular expression
#	database = (%[\\/](e[[:DIGIT:]]{2}).fdb)
# type
#	database = (%[\\/](e[[:DIGIT:]]{{2}}).fdb)


database
{
	# Do we trace database events or not
	#enabled = false


	# Operations log file name. For use by system audit trace only
	#log_filename = name

	# Maximum size of log file (megabytes). Used by system audit trace for 
	# log's rotation : when current log file reached this limit it is renamed
	# using current date and time and new log file is created. Value of zero 
	# means that the log file size is unlimited and rotation will never happen.
	#max_log_size = 0


	# SQL query filters. 
	#
	# Only SQL statements falling under given regular expression are reported 
	# in the log.
	#include_filter 

	# SQL statements falling under given regular expression are NOT reported 
	# in the log.
	#exclude_filter 


	# Put attach/detach log records 
	#log_connections = false

	# Trace only given connection id. If zero - trace all connections 
	#connection_id = 0

	# Put transaction start/end records 
	#log_transactions = false


	# Put sql statement prepare records 
	#log_statement_prepare = false

	# Put sql statement free records 
	#log_statement_free = false

	# Put sql statement execution start records 
	#log_statement_start = false
	
	# Put sql statement execution finish\fetch to eof records 
	#log_statement_finish = false


	# Put record when stored procedure is start execution 
	#log_procedure_start = false

	# Put record when stored procedure is finish execution 
	#log_procedure_finish = false

	# Put record when stored function is start execution 
	#log_function_start = false

	# Put record when stored function is finish execution 
	#log_function_finish = false

	# Put trigger execute records 
	#log_trigger_start = false

	# Put trigger execute records 
	#log_trigger_finish = false


	# Put context variable change records (RDB$SET_CONTEXT)
	#log_context = false

	# Put errors happened
	#log_errors = false

	# Put warnings
	#log_warnings = false

	# Filters for errors and warnings GDS codes.
	# Comma separated list of GDS codes values and\or names.
	# For example: deadlock, req_sync, 335544321

	# Include filter. If empty, trace all errors\warnings events.
	# Else trace event if any code from list is found in status-vector.
	#include_gds_codes

	# Exclude filter. If empty, trace all errors\warnings events.
	# Else trace event if no code from list is found in status-vector.
	#exclude_gds_codes

	# Put trace session init and finish messages
	#log_initfini = true

	# Sweep activity
	#log_sweep = false


	# Print access path (plan) with sql statement
	#print_plan = false

	# Use legacy (false) or explained (true) plan format
	#explain_plan = false

	# Print detailed performance info when applicable
	#print_perf = false


	# Put blr requests compile/execute records 
	#log_blr_requests = false

	# Print blr requests or not
	#print_blr = false

	# Put dyn requests execute records 
	#log_dyn_requests = false

	# Print dyn requests or not
	#print_dyn = false


	# Put xxx_finish record only if its timing exceeds this number of milliseconds
	#time_threshold = 100

	# Maximum length of SQL string logged 
	# Beware when adjusting max_xxx parameters! Maximum length of log record
	# for one event should never exceed 64K.
	#max_sql_length = 300

	# Maximum length of blr request logged 
	#max_blr_length = 500

	# Maximum length of dyn request logged 
	#max_dyn_length = 500

	# Maximum length of individual string argument we log 
	#max_arg_length = 80

	# Maximum number of query arguments to put in log 
	#max_arg_count = 30
}



# default services section
#
# List of names of currently existing Firebird services (to use with service 
# filters below) :
#	Backup Database
#	Restore Database
#	Repair Database
#	Add User
#	Delete User
#	Modify User
#	Display User
#	Database Properties
#	Database Stats
#	Get Log File
#	Incremental Backup Database
#	Incremental Restore Database
#	Start Trace Session
#	Stop Trace Session
#	Suspend Trace Session
#	Resume Trace Session
#	List Trace Sessions
#	Set Domain Admins Mapping to RDB$ADMIN
#	Drop Domain Admins Mapping to RDB$ADMIN
#
services 
{
	# Do we trace services events or not
	#enabled = false

	# Operations log file name. For use by system audit trace only
	#log_filename = name

	# Maximum size of log file (megabytes). Used by system audit trace for 
	# log's rotation 
	#max_log_size = 0

	# Services filters.
	#
	# Only services whose names fall under given regular expression are 
	# reported in the log.
	#include_filter 

	# Services whose names fall under given regular expression are NOT 
	# reported in the log.
	#exclude_filter 

	# Put service attach, detach and start records
	#log_services = false

	# Put service query records
	#log_service_query = false

	# Put errors happened
	#log_errors = false

	# Put warnings
	#log_warnings = false

	# Filters for errors and warnings GDS codes.
	# Comma separated list of GDS codes values and\or names.
	# For example: deadlock, req_sync, 335544321

	# Include filter. If empty, trace all errors\warnings events.
	# Else trace event if any code from list is found in status-vector.
	#include_gds_codes

	# Exclude filter. If empty, trace all errors\warnings events.
	# Else trace event if no code from list is found in status-vector.
	#exclude_gds_codes

	# Put trace session init and finish messages
	#log_initfini = true
}


# Example of trace customization:
#
# Enable logging for my_database.fdb in any folder
#
database = %[\\/]my_database.fdb
{
	enabled = true
}


# Enable logging for test.fdb, azk2.fdb and rulez.fdb in any directory
# into log file name matching database name - test.log, azk2.log and 
# rulez.log appropriately
#
database = %[\\/](test|azk2|rulez).fdb
{
	enabled = true
	log_filename = \1.log
}
