From: <aye...@us...> - 2009-05-08 00:04:11
|
Revision: 4263 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4263&view=rev Author: ayenderahien Date: 2009-05-08 00:04:03 +0000 (Fri, 08 May 2009) Log Message: ----------- Log batch commands to NHibernate.SQL logger if it is enable as a single unit Better log output for byte arrays so they would go as hex strings Modified Paths: -------------- trunk/nhibernate/src/NHibernate/AdoNet/SqlClientBatchingBatcher.cs trunk/nhibernate/src/NHibernate/AdoNet/Util/SqlStatementLogger.cs Modified: trunk/nhibernate/src/NHibernate/AdoNet/SqlClientBatchingBatcher.cs =================================================================== --- trunk/nhibernate/src/NHibernate/AdoNet/SqlClientBatchingBatcher.cs 2009-05-07 18:00:44 UTC (rev 4262) +++ trunk/nhibernate/src/NHibernate/AdoNet/SqlClientBatchingBatcher.cs 2009-05-08 00:04:03 UTC (rev 4263) @@ -66,7 +66,10 @@ Prepare(currentBatch.BatchCommand); if (log.IsDebugEnabled) { - log.Debug(currentBatchCommandsLog.ToString()); + if (Factory.Settings.SqlStatementLogger.IsDebugEnabled) + Factory.Settings.SqlStatementLogger.LogBatchCommand(currentBatchCommandsLog.ToString()); + else + log.Debug(currentBatchCommandsLog.ToString()); currentBatchCommandsLog = new StringBuilder(); } int rowsAffected = currentBatch.ExecuteNonQuery(); Modified: trunk/nhibernate/src/NHibernate/AdoNet/Util/SqlStatementLogger.cs =================================================================== --- trunk/nhibernate/src/NHibernate/AdoNet/Util/SqlStatementLogger.cs 2009-05-07 18:00:44 UTC (rev 4262) +++ trunk/nhibernate/src/NHibernate/AdoNet/Util/SqlStatementLogger.cs 2009-05-08 00:04:03 UTC (rev 4263) @@ -60,6 +60,11 @@ } } + public virtual void LogBatchCommand(string batchCommand) + { + log.Debug(batchCommand); + } + /// <summary> Log a IDbCommand. </summary> /// <param name="command">The SQL statement. </param> /// <param name="style">The requested formatting style. </param> @@ -104,16 +109,32 @@ { if(parameter.Value == null || DBNull.Value.Equals(parameter.Value)) { - return "null"; + return "NULL"; } - else if (IsStringType(parameter.DbType)) - { - return string.Concat("'", parameter.Value.ToString(), "'"); - } - return parameter.Value.ToString(); + if (IsStringType(parameter.DbType)) + { + return string.Concat("'", parameter.Value.ToString(), "'"); + } + var buffer = parameter.Value as byte[]; + if(buffer != null) + { + return GetBufferAsHexString(buffer); + } + return parameter.Value.ToString(); } - private static bool IsStringType(DbType dbType) + private static string GetBufferAsHexString(byte[] buffer) + { + var sb = new StringBuilder(buffer.Length*2 + 2); + sb.Append("0x"); + foreach (var b in buffer) + { + sb.Append(b.ToString("X2")); + } + return sb.ToString(); + } + + private static bool IsStringType(DbType dbType) { return DbType.String.Equals(dbType) || DbType.AnsiString.Equals(dbType) || DbType.AnsiStringFixedLength.Equals(dbType) || DbType.StringFixedLength.Equals(dbType); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |