启用ODP.Net日志记录

时间:2011-05-06 18:10:33

标签: c# oracle ado.net trace odp.net

任何人都可以帮助我在Windows XP计算机上启用ODP.Net日志记录吗?我用谷歌搜索并发现以下链接,但它对我不起作用。

http://download.oracle.com/docs/html/E10927_01/featConfig.htm

我在注册表中将“TraceLevel”设置为“63”,但它没有帮助

基本上我想通过日志捕获从我的C#代码发生的所有数据库调用。

我希望Oracle有一个像“SQL Profiler”这样的工具。

3 个答案:

答案 0 :(得分:3)

在解决Oracle支持的一些问题时,我在某些计算机上遇到了同样的问题。我发现多次更改输出文件的路径并多次重启最终迫使ODP客户端开始记录。确保输出文件位于您的调用应用程序标识可以访问的目录中。

检查注册表项中的以下内容。这是我的机器上.net4和11.2的一个例子。

HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ ORACLE \ ODP.NET \ 4.112.2.0

  • 32位或64位(正确的节点)
  • 将跟踪级别更改为8(或64我认为是完整日志记录)
  • 更改跟踪选项= 1
  • 设置有效的TraceFileName

答案 1 :(得分:3)

请注意,跟踪将默认位于C驱动器的根目录中。对于Windows 7及更高版本,这需要管理员权限,否则它将以静默方式失败。因此要么确保您的应用程序以管理员身份运行,要么确保更改文件的路径。

另请注意,如果要跟踪完全托管的ODP.NET,则需要将设置放在应用程序或Web配置文件中,而不是注册表中,并且TraceLevel的设置不同(1到7)。 / p>

最后,在跟踪非托管ODP.NET时,请记住32位Windows有一个单独的WOW注册表节点。如果您的应用是32位,请不要在注册表的64位部分下意外设置。

答案 2 :(得分:-2)

您还可以使用基于AOP的方法 - 使用Castle Dynamic Proxy等库生成代理,拦截您感兴趣的调用并记录SQL和参数等参数。在我看来,这是更强大的方法,虽然它可以某种方式影响性能。有关示例实现,请参阅此要点:https://gist.github.com/Buthrakaur/b1124c08f8521f39f8fd