@@ -8,10 +8,12 @@ namespace NHibernate.AdoNet.Util
8
8
/// <summary> Centralize logging handling for SQL statements. </summary>
9
9
public class SqlStatementLogger
10
10
{
11
- private static readonly IInternalLogger log = LoggerProvider . LoggerFor ( "NHibernate.SQL" ) ;
11
+ private static readonly IInternalLogger Logger = LoggerProvider . LoggerFor ( "NHibernate.SQL" ) ;
12
12
13
13
/// <summary> Constructs a new SqlStatementLogger instance.</summary>
14
- public SqlStatementLogger ( ) : this ( false , false ) { }
14
+ public SqlStatementLogger ( ) : this ( false , false )
15
+ {
16
+ }
15
17
16
18
/// <summary> Constructs a new SqlStatementLogger instance. </summary>
17
19
/// <param name="logToStdout">Should we log to STDOUT in addition to our internal logger. </param>
@@ -28,7 +30,7 @@ public SqlStatementLogger(bool logToStdout, bool formatSql)
28
30
29
31
public bool IsDebugEnabled
30
32
{
31
- get { return log . IsDebugEnabled ; }
33
+ get { return Logger . IsDebugEnabled ; }
32
34
}
33
35
34
36
/// <summary> Log a IDbCommand. </summary>
@@ -37,7 +39,7 @@ public bool IsDebugEnabled
37
39
/// <param name="style">The requested formatting style. </param>
38
40
public virtual void LogCommand ( string message , IDbCommand command , FormatStyle style )
39
41
{
40
- if ( ! log . IsDebugEnabled && ! LogToStdout || string . IsNullOrEmpty ( command . CommandText ) )
42
+ if ( ! Logger . IsDebugEnabled && ! LogToStdout || string . IsNullOrEmpty ( command . CommandText ) )
41
43
{
42
44
return ;
43
45
}
@@ -53,7 +55,7 @@ public virtual void LogCommand(string message, IDbCommand command, FormatStyle s
53
55
{
54
56
logMessage = message + statement ;
55
57
}
56
- log . Debug ( logMessage ) ;
58
+ Logger . Debug ( logMessage ) ;
57
59
if ( LogToStdout )
58
60
{
59
61
Console . Out . WriteLine ( "NHibernate: " + statement ) ;
@@ -78,7 +80,7 @@ public string GetCommandLineWithParameters(IDbCommand command)
78
80
}
79
81
else
80
82
{
81
- var output = new StringBuilder ( command . CommandText . Length + ( command . Parameters . Count * 20 ) ) ;
83
+ var output = new StringBuilder ( command . CommandText . Length + ( command . Parameters . Count * 20 ) ) ;
82
84
output . Append ( command . CommandText . TrimEnd ( ' ' , ';' , '\n ' ) ) ;
83
85
output . Append ( ";" ) ;
84
86
@@ -92,54 +94,74 @@ public string GetCommandLineWithParameters(IDbCommand command)
92
94
output . Append ( ", " ) ;
93
95
}
94
96
appendComma = true ;
95
- p = ( IDataParameter ) command . Parameters [ i ] ;
96
- output . Append ( string . Format ( "{0} = {1} [Type: {2}]" , p . ParameterName , GetParameterLogableValue ( p ) , GetParameterLogableType ( p ) ) ) ;
97
+ p = ( IDataParameter ) command . Parameters [ i ] ;
98
+ output . Append (
99
+ string . Format ( "{0} = {1} [Type: {2}]" , p . ParameterName , GetParameterLoggableValue ( p ) , GetParameterLoggableType ( p ) ) ) ;
97
100
}
98
101
outputText = output . ToString ( ) ;
99
102
}
100
103
return outputText ;
101
104
}
102
105
103
- private static string GetParameterLogableType ( IDataParameter dataParameter )
104
- {
105
- var p = dataParameter as IDbDataParameter ;
106
- if ( p != null )
107
- return p . DbType + " (" + p . Size + ")" ;
108
- return p . DbType . ToString ( ) ;
106
+ private static string GetParameterLoggableType ( IDataParameter dataParameter )
107
+ {
108
+ var p = dataParameter as IDbDataParameter ;
109
+ if ( p != null )
110
+ return p . DbType + " (" + p . Size + ":" + p . Scale + ":" + p . Precision + ")" ;
111
+ return dataParameter . DbType . ToString ( ) ;
112
+ }
113
+
109
114
110
- }
115
+ public string GetParameterLoggableValue ( IDataParameter parameter )
116
+ {
117
+ const int maxLoggableStringLength = 1000 ;
111
118
112
- public string GetParameterLogableValue ( IDataParameter parameter )
119
+ if ( parameter . Value == null || DBNull . Value . Equals ( parameter . Value ) )
113
120
{
114
- const int maxLogableStringLength = 1000 ;
115
- if ( parameter . Value == null || DBNull . Value . Equals ( parameter . Value ) )
116
- {
117
- return "NULL" ;
118
- }
119
- if ( IsStringType ( parameter . DbType ) )
120
- {
121
- return string . Concat ( "'" , TruncateWithEllipsis ( parameter . Value . ToString ( ) , maxLogableStringLength ) , "'" ) ;
122
- }
123
- var buffer = parameter . Value as byte [ ] ;
124
- if ( buffer != null )
125
- {
126
- return GetBufferAsHexString ( buffer ) ;
127
- }
128
- return parameter . Value . ToString ( ) ;
121
+ return "NULL" ;
122
+ }
123
+
124
+ if ( IsStringType ( parameter . DbType ) )
125
+ {
126
+ return string . Concat ( "'" , TruncateWithEllipsis ( parameter . Value . ToString ( ) , maxLoggableStringLength ) , "'" ) ;
129
127
}
130
128
129
+ if ( parameter . Value is DateTime )
130
+ return ( ( DateTime ) parameter . Value ) . ToString ( "O" ) ;
131
+
132
+ if ( parameter . Value is DateTimeOffset )
133
+ return ( ( DateTimeOffset ) parameter . Value ) . ToString ( "O" ) ;
134
+
135
+ var buffer = parameter . Value as byte [ ] ;
136
+ if ( buffer != null )
137
+ {
138
+ return GetBufferAsHexString ( buffer ) ;
139
+ }
140
+
141
+ return parameter . Value . ToString ( ) ;
142
+
143
+ }
144
+
145
+
146
+ [ Obsolete ( "Use GetParameterLoggableValue(parameter) instead." ) ]
147
+ public string GetParameterLogableValue ( IDataParameter parameter )
148
+ {
149
+ return GetParameterLoggableValue ( parameter ) ;
150
+ }
151
+
152
+
131
153
private static string GetBufferAsHexString ( byte [ ] buffer )
132
154
{
133
155
const int maxBytes = 128 ;
134
156
int bufferLength = buffer . Length ;
135
157
136
- var sb = new StringBuilder ( maxBytes * 2 + 8 ) ;
158
+ var sb = new StringBuilder ( maxBytes * 2 + 8 ) ;
137
159
sb . Append ( "0x" ) ;
138
160
for ( int i = 0 ; i < bufferLength && i < maxBytes ; i ++ )
139
161
{
140
162
sb . Append ( buffer [ i ] . ToString ( "X2" ) ) ;
141
163
}
142
- if ( bufferLength > maxBytes )
164
+ if ( bufferLength > maxBytes )
143
165
{
144
166
sb . Append ( "..." ) ;
145
167
}
@@ -149,7 +171,7 @@ private static string GetBufferAsHexString(byte[] buffer)
149
171
private static bool IsStringType ( DbType dbType )
150
172
{
151
173
return DbType . String . Equals ( dbType ) || DbType . AnsiString . Equals ( dbType )
152
- || DbType . AnsiStringFixedLength . Equals ( dbType ) || DbType . StringFixedLength . Equals ( dbType ) ;
174
+ || DbType . AnsiStringFixedLength . Equals ( dbType ) || DbType . StringFixedLength . Equals ( dbType ) ;
153
175
}
154
176
155
177
public FormatStyle DetermineActualStyle ( FormatStyle style )
@@ -159,8 +181,8 @@ public FormatStyle DetermineActualStyle(FormatStyle style)
159
181
160
182
public void LogBatchCommand ( string batchCommand )
161
183
{
162
- log . Debug ( batchCommand ) ;
163
- if ( LogToStdout )
184
+ Logger . Debug ( batchCommand ) ;
185
+ if ( LogToStdout )
164
186
{
165
187
Console . Out . WriteLine ( "NHibernate: " + batchCommand ) ;
166
188
}
@@ -176,4 +198,4 @@ private string TruncateWithEllipsis(string source, int length)
176
198
return source ;
177
199
}
178
200
}
179
- }
201
+ }
0 commit comments