1212 * express or implied. See the License for the specific
1313 * language governing rights and limitations under the License.
1414 *
15- * Copyright (c) 2010-2012 Jiri Cincura (jiri@cincura.net)
15+ * Copyright (c) 2010-2017 Jiri Cincura (jiri@cincura.net)
1616 * All Rights Reserved.
1717 */
1818
1919using System ;
2020using System . Text ;
2121
22- using FirebirdSql . Data . Common ;
23-
2422namespace FirebirdSql . Data . Services
2523{
2624 public class FbDatabaseTraceConfiguration : FbTraceConfiguration
@@ -55,11 +53,26 @@ public FbDatabaseTraceConfiguration()
5553 public string IncludeFilter { get ; set ; }
5654 public string ExcludeFilter { get ; set ; }
5755
58- public override string ToString ( )
56+ public string IncludeGdsCodes { get ; set ; }
57+ public string ExcludeGdsCodes { get ; set ; }
58+
59+ public string BuildConfiguration ( FbTraceVersion version )
5960 {
60- StringBuilder sb = new StringBuilder ( ) ;
61+ switch ( version )
62+ {
63+ case FbTraceVersion . Version1 :
64+ return BuildConfiguration1 ( ) ;
65+ case FbTraceVersion . Version2 :
66+ return BuildConfiguration2 ( ) ;
67+ default :
68+ throw new ArgumentOutOfRangeException ( nameof ( version ) ) ;
69+ }
70+ }
71+ string BuildConfiguration1 ( )
72+ {
73+ var sb = new StringBuilder ( ) ;
6174 sb . Append ( "<database" ) ;
62- sb . Append ( ( ! string . IsNullOrEmpty ( DatabaseName ) ? " " + WriteString ( DatabaseName ) : string . Empty ) ) ;
75+ sb . Append ( ( ! string . IsNullOrEmpty ( DatabaseName ) ? $ " { WriteRegEx ( DatabaseName ) } " : string . Empty ) ) ;
6376 sb . AppendLine ( ">" ) ;
6477 sb . AppendFormat ( "enabled {0}" , WriteBoolValue ( Enabled ) ) ;
6578 sb . AppendLine ( ) ;
@@ -73,6 +86,16 @@ public override string ToString()
7386 sb . AppendFormat ( "exclude_filter {0}" , WriteRegEx ( ExcludeFilter ) ) ;
7487 sb . AppendLine ( ) ;
7588 }
89+ if ( ! string . IsNullOrEmpty ( IncludeGdsCodes ) )
90+ {
91+ sb . AppendFormat ( "include_gds_codes {0}" , WriteString ( IncludeGdsCodes ) ) ;
92+ sb . AppendLine ( ) ;
93+ }
94+ if ( ! string . IsNullOrEmpty ( ExcludeGdsCodes ) )
95+ {
96+ sb . AppendFormat ( "exclude_gds_codes {0}" , WriteString ( ExcludeGdsCodes ) ) ;
97+ sb . AppendLine ( ) ;
98+ }
7699 sb . AppendFormat ( "log_connections {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . Connections ) ) ) ;
77100 sb . AppendLine ( ) ;
78101 sb . AppendFormat ( "connection_id {0}" , WriteNumber ( ConnectionID ) ) ;
@@ -91,6 +114,10 @@ public override string ToString()
91114 sb . AppendLine ( ) ;
92115 sb . AppendFormat ( "log_procedure_finish {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . ProcedureFinish ) ) ) ;
93116 sb . AppendLine ( ) ;
117+ sb . AppendFormat ( "log_function_start {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . FunctionStart ) ) ) ;
118+ sb . AppendLine ( ) ;
119+ sb . AppendFormat ( "log_function_finish {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . FunctionFinish ) ) ) ;
120+ sb . AppendLine ( ) ;
94121 sb . AppendFormat ( "log_trigger_start {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . TriggerStart ) ) ) ;
95122 sb . AppendLine ( ) ;
96123 sb . AppendFormat ( "log_trigger_finish {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . TriggerFinish ) ) ) ;
@@ -99,10 +126,16 @@ public override string ToString()
99126 sb . AppendLine ( ) ;
100127 sb . AppendFormat ( "log_errors {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . Errors ) ) ) ;
101128 sb . AppendLine ( ) ;
129+ sb . AppendFormat ( "log_warnings {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . Warnings ) ) ) ;
130+ sb . AppendLine ( ) ;
131+ sb . AppendFormat ( "log_initfini {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . InitFini ) ) ) ;
132+ sb . AppendLine ( ) ;
102133 sb . AppendFormat ( "log_sweep {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . Sweep ) ) ) ;
103134 sb . AppendLine ( ) ;
104135 sb . AppendFormat ( "print_plan {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . PrintPlan ) ) ) ;
105136 sb . AppendLine ( ) ;
137+ sb . AppendFormat ( "explain_plan {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . ExplainPlan ) ) ) ;
138+ sb . AppendLine ( ) ;
106139 sb . AppendFormat ( "print_perf {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . PrintPerf ) ) ) ;
107140 sb . AppendLine ( ) ;
108141 sb . AppendFormat ( "log_blr_requests {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . BLRRequests ) ) ) ;
@@ -128,5 +161,98 @@ public override string ToString()
128161 sb . AppendLine ( "</database>" ) ;
129162 return sb . ToString ( ) ;
130163 }
164+ string BuildConfiguration2 ( )
165+ {
166+ var sb = new StringBuilder ( ) ;
167+ sb . Append ( "database" ) ;
168+ sb . Append ( ( ! string . IsNullOrEmpty ( DatabaseName ) ? $ " = { WriteRegEx ( DatabaseName ) } " : string . Empty ) ) ;
169+ sb . AppendLine ( "{" ) ;
170+ sb . AppendFormat ( "enabled = {0}" , WriteBoolValue ( Enabled ) ) ;
171+ sb . AppendLine ( ) ;
172+ if ( ! string . IsNullOrEmpty ( IncludeFilter ) )
173+ {
174+ sb . AppendFormat ( "include_filter = {0}" , WriteRegEx ( IncludeFilter ) ) ;
175+ sb . AppendLine ( ) ;
176+ }
177+ if ( ! string . IsNullOrEmpty ( ExcludeFilter ) )
178+ {
179+ sb . AppendFormat ( "exclude_filter = {0}" , WriteRegEx ( ExcludeFilter ) ) ;
180+ sb . AppendLine ( ) ;
181+ }
182+ if ( ! string . IsNullOrEmpty ( IncludeGdsCodes ) )
183+ {
184+ sb . AppendFormat ( "include_gds_codes = {0}" , WriteString ( IncludeGdsCodes ) ) ;
185+ sb . AppendLine ( ) ;
186+ }
187+ if ( ! string . IsNullOrEmpty ( ExcludeGdsCodes ) )
188+ {
189+ sb . AppendFormat ( "exclude_gds_codes = {0}" , WriteString ( ExcludeGdsCodes ) ) ;
190+ sb . AppendLine ( ) ;
191+ }
192+ sb . AppendFormat ( "log_connections = {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . Connections ) ) ) ;
193+ sb . AppendLine ( ) ;
194+ sb . AppendFormat ( "connection_id = {0}" , WriteNumber ( ConnectionID ) ) ;
195+ sb . AppendLine ( ) ;
196+ sb . AppendFormat ( "log_transactions = {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . Transactions ) ) ) ;
197+ sb . AppendLine ( ) ;
198+ sb . AppendFormat ( "log_statement_prepare = {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . StatementPrepare ) ) ) ;
199+ sb . AppendLine ( ) ;
200+ sb . AppendFormat ( "log_statement_free = {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . StatementFree ) ) ) ;
201+ sb . AppendLine ( ) ;
202+ sb . AppendFormat ( "log_statement_start = {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . StatementStart ) ) ) ;
203+ sb . AppendLine ( ) ;
204+ sb . AppendFormat ( "log_statement_finish = {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . StatementFinish ) ) ) ;
205+ sb . AppendLine ( ) ;
206+ sb . AppendFormat ( "log_procedure_start = {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . ProcedureStart ) ) ) ;
207+ sb . AppendLine ( ) ;
208+ sb . AppendFormat ( "log_procedure_finish = {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . ProcedureFinish ) ) ) ;
209+ sb . AppendLine ( ) ;
210+ sb . AppendFormat ( "log_function_start = {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . FunctionStart ) ) ) ;
211+ sb . AppendLine ( ) ;
212+ sb . AppendFormat ( "log_function_finish = {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . FunctionFinish ) ) ) ;
213+ sb . AppendLine ( ) ;
214+ sb . AppendFormat ( "log_trigger_start = {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . TriggerStart ) ) ) ;
215+ sb . AppendLine ( ) ;
216+ sb . AppendFormat ( "log_trigger_finish = {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . TriggerFinish ) ) ) ;
217+ sb . AppendLine ( ) ;
218+ sb . AppendFormat ( "log_context = {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . Context ) ) ) ;
219+ sb . AppendLine ( ) ;
220+ sb . AppendFormat ( "log_errors = {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . Errors ) ) ) ;
221+ sb . AppendLine ( ) ;
222+ sb . AppendFormat ( "log_warnings = {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . Warnings ) ) ) ;
223+ sb . AppendLine ( ) ;
224+ sb . AppendFormat ( "log_initfini = {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . InitFini ) ) ) ;
225+ sb . AppendLine ( ) ;
226+ sb . AppendFormat ( "log_sweep = {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . Sweep ) ) ) ;
227+ sb . AppendLine ( ) ;
228+ sb . AppendFormat ( "print_plan = {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . PrintPlan ) ) ) ;
229+ sb . AppendLine ( ) ;
230+ sb . AppendFormat ( "explain_plan = {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . ExplainPlan ) ) ) ;
231+ sb . AppendLine ( ) ;
232+ sb . AppendFormat ( "print_perf = {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . PrintPerf ) ) ) ;
233+ sb . AppendLine ( ) ;
234+ sb . AppendFormat ( "log_blr_requests = {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . BLRRequests ) ) ) ;
235+ sb . AppendLine ( ) ;
236+ sb . AppendFormat ( "print_blr = {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . PrintBLR ) ) ) ;
237+ sb . AppendLine ( ) ;
238+ sb . AppendFormat ( "log_dyn_requests = {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . DYNRequests ) ) ) ;
239+ sb . AppendLine ( ) ;
240+ sb . AppendFormat ( "print_dyn = {0}" , WriteBoolValue ( Events . HasFlag ( FbDatabaseTraceEvents . PrintDYN ) ) ) ;
241+ sb . AppendLine ( ) ;
242+ sb . AppendFormat ( "time_threshold = {0}" , WriteNumber ( ( int ) TimeThreshold . TotalMilliseconds ) ) ;
243+ sb . AppendLine ( ) ;
244+ sb . AppendFormat ( "max_sql_length = {0}" , WriteNumber ( MaxSQLLength ) ) ;
245+ sb . AppendLine ( ) ;
246+ sb . AppendFormat ( "max_blr_length = {0}" , WriteNumber ( MaxBLRLength ) ) ;
247+ sb . AppendLine ( ) ;
248+ sb . AppendFormat ( "max_dyn_length = {0}" , WriteNumber ( MaxDYNLength ) ) ;
249+ sb . AppendLine ( ) ;
250+ sb . AppendFormat ( "max_arg_length = {0}" , WriteNumber ( MaxArgumentLength ) ) ;
251+ sb . AppendLine ( ) ;
252+ sb . AppendFormat ( "max_arg_count = {0}" , WriteNumber ( MaxArgumentsCount ) ) ;
253+ sb . AppendLine ( ) ;
254+ sb . AppendLine ( "}" ) ;
255+ return sb . ToString ( ) ;
256+ }
131257 }
132258}
0 commit comments