- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
几天前问过这个问题,但可能不太具体。
基本上,我正在编写一个控制台应用程序,它接受存储过程名称列表并任意执行它们。该应用程序应该将这些存储过程的进度记录到 Slack 等,并在以后做一些其他事情。
我提到的“其他东西”与已知的数据库模型交互,并且由于我们构建了一个 ServiceStack/OrmLite 类型的库,我稍后将使用 OrmLite 与数据库交互。
因此,由于我在项目中包含并配置了 OrmLite,我只是使用 OrmLite IDbConnection
来执行存储过程,即使它只是按名称。 sprocs 只是将数据移动到另一个数据库,应用程序不需要与之交互的数据库 - 所以我没有 SELECT
使用 sprocs 将任何数据输入应用程序并且没有 POCO 表示什么被移动了。
但是,sproc 会吐出一些信息性的 PRINT
语句,我想通过 Slack 以格式化的方式捕获并记录到我们的团队。为此,启用完整的调试日志记录会吐出太多信息。
有什么方法可以配置 Ormlite
SqlServerDialect.Provider
、IDataReader
等来基本捕获 SqlConnection.InfoMessage
事件(或为其提供一个已准备好 SqlInfoMessageEventHandler
的连接)?
最佳答案
执行此操作的日志记录策略方法是在您的日志记录提供程序中配置一个过滤器,以仅记录您感兴趣的消息。
包含 SQL 和 DB 参数的 OrmLite 的 SQL 调试日志消息记录在 ServiceStack.OrmLite.OrmLiteResultsFilterExtensions
类型下。
为了简化此场景,我刚刚添加了新的 OrmLiteConfig.BeforeExecFilter
和 OrmLiteConfig.AfterExecFilter
,您可以使用它们在 DB 命令之前和之后执行自定义逻辑执行,例如:
OrmLiteConfig.BeforeExecFilter = dbCmd => Console.WriteLine(dbCmd.GetDebugString());
此更改从现在的 v5.0.3 开始可用 available on MyGet .
关于c# - ServiceStack OrmLite - 从存储过程中捕获 Sql InfoMessage 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49905167/
我有几个长时间运行的 Sybase 存储过程,带有输出进度消息的打印语句。我们一直使用 isql 或通过 aseisql 或 sqladvantage(所有 sybase 特定工具)手动执行这些 SP
我正在使用 sqlConnection.InfoMessage += new SqlInfoMessageEventHandler(sqlConnection_InfoMessage); 和Execu
我想打印来自 SQL 存储过程的消息。 如果我使用 SYNC 选项执行 cmd.ExecuteNonQuery 连接会触发 InfoMessage 事件,但是当我使用 ASYNC 选项执行时,该事件不
几天前问过这个问题,但可能不太具体。 基本上,我正在编写一个控制台应用程序,它接受存储过程名称列表并任意执行它们。该应用程序应该将这些存储过程的进度记录到 Slack 等,并在以后做一些其他事情。 我
我是一名优秀的程序员,十分优秀!