[
http://issues.apache.org/jira/browse/IBATISNET-35?page=comments#action_63830 ]
Ron Grabowski commented on IBATISNET-35:
----------------------------------------
I know the code isn't in its final form and that you are busy improving other
areas. I updated my local copy from SVN today (revision 164856 from 4/26/2005)
and came across some logging code in ApplyParameterMap in
DefaultPreparedCommand.cs:
if (parameterValue == System.DBNull.Value)
{
valueList.Append("null,");
typeList.Append("null,");
}
else
{
valueList.Append( parameterValue.ToString() );
valueList.Append( "," );
typeList.Append( parameterValue.GetType().ToString() );
typeList.Append( "," );
}
In the case of large byte[] being sent to the database, it looks like the log
will contain a string representation of the data. If the parameter is large
(say a 15mb PDF document) I don't think people will appreciate their log files
filling up with binary data. Perhaps a check can be added to make sure that
large amounts of data will not be written to the log file:
// ???
if (parameterValue is System.ValueType)
{
valueList.Append( parameterValue.ToString() );
}
else
{
valueList.Append( parameterValue.GetHashCode().ToString() );
}
valueList.Append( "," );
typeList.Append( parameterValue.GetType().ToString() );
typeList.Append( "," );
I'm not exactly sure what happens for things like byte[]. Isn't byte is an
alias for System.Byte which extends ValueType? I wonder what happens when its
used in the array syntax...
At the bottom of the same class I saw this:
_logger.Debug("Parameters: [" +
valueList.ToString().Remove(valueList.ToString().Length-1,1) + "]");
I think it can be shortened to:
_logger.Debug("Parameters: [" + valueList.ToString(0, valueList.Length - 1) +
"]");
That may save two temp strings from being created. One from
valueList.ToString() and one from Remove().
> Improve logging of text sent to database and recieved from database to match
> Java version of IBatis
> ---------------------------------------------------------------------------------------------------
>
> Key: IBATISNET-35
> URL: http://issues.apache.org/jira/browse/IBATISNET-35
> Project: iBatis for .NET
> Type: Improvement
> Versions: DataAccess 1.5, DataMapper 1.1
> Environment: Data Mapper - [assembly: AssemblyVersion("1.1.458")]
> Data Access - [assembly: AssemblyVersion("1.5.458")]
> Reporter: Ron Grabowski
> Assignee: Gilles Bayon
> Attachments: SystemDataProxy.zip
>
> Here are some example logs from the Java version of IBatis. The examples show
> INSERT, SELECT, UPDATE, and DELETE statements:
> DEBUG - Checked out connection 30332961 from pool.
> DEBUG - {conn-100003} Connection
> DEBUG - {pstm-100004} PreparedStatement: INSERT INFO UserAudit (UserId,
> AuditEvent, DateOccurred) values (?,?,?)
> DEBUG - {pstm-100004} Parameters: [4, audit.login.success, 2004-08-25
> 09:15:22.809]
> DEBUG - {pstm-100004} Types: [java.lang.Integer, java.lang.String,
> java.sql.Timestamp]
> DEBUG - {pstm-100005} PreparedStatement: SELECT LAST_INSERT_ID() AS id
> DEBUG - {pstm-100005} Parameters: []
> DEBUG - {pstm-100005} Types: []
> DEBUG - {rset-100006} ResultSet
> DEBUG - {rset-100006} Header: [id]
> DEBUG - {rset-100006} Result: [422]
> DEBUG - Returned connection 30332961 to pool.
> DEBUG - Checked out connection 30332961 from pool.
> DEBUG - {conn-100007} Connection
> DEBUG - {pstm-100008} PreparedStatement: SELECT UserId, Login, Password FROM
> User WHERE Login = ? and Password = ?
> DEBUG - {pstm-100008} Parameters: [abc123, def456]
> DEBUG - {pstm-100008} Types: [java.lang.String, java.lang.String]
> DEBUG - {rset-100009} ResultSet
> DEBUG - {rset-100009} Header: [UserId, Login, Password]
> DEBUG - {rset-100009} Result: [4, abc1234, def456]
> DEBUG - Returned connection 30332961 to pool.
> DEBUG - Checked out connection 4548856 from pool.
> DEBUG - {conn-100045} Connection
> DEBUG - {pstm-100046} PreparedStatement: SELECT UserId, Login FROM User
> DEBUG - {pstm-100046} Parameters: []
> DEBUG - {pstm-100046} Types: []
> DEBUG - {rset-100047} ResultSet
> DEBUG - {rset-100047} Header: [UserId, Login]
> DEBUG - {rset-100047} Result: [1, abc123]
> DEBUG - {rset-100047} Result: [4, def456]
> DEBUG - {rset-100047} Result: [6, aaaaa]
> DEBUG - Returned connection 4548856 to pool.
> DEBUG - Checked out connection 7125805 from pool.
> DEBUG - {conn-100043} Connection
> DEBUG - {pstm-100044} PreparedStatement: UPDATE User SET Login = ? WHERE
> UserId = ?
> DEBUG - {pstm-100044} Parameters: [aaaaa, 4]
> DEBUG - {pstm-100044} Types: [java.lang.String, java.lang.Integer]
> DEBUG - Returned connection 7125805 to pool.
> DEBUG - Checked out connection 27062282 from pool.
> DEBUG - {conn-100043} Connection
> DEBUG - {pstm-100044} PreparedStatement: DELETE FROM User WHERE UserId = ?
> DEBUG - {pstm-100044} Parameters: [4]
> DEBUG - {pstm-100044} Types: [java.lang.Integer]
> DEBUG - Returned connection 27062282 to pool.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira