当前位置: 首页 > 面试题库 >

获取从中触发SQL查询的程序包的名称?

贝凯
2023-03-14
问题内容

我在Webapp中将jdbcdslog与log4j日志记录引擎一起使用。我能够记录执行的SQL查询。我想知道如何获取触发查询的程序包的名称。这样我就可以分离出Log信息,并通过查看日志而不是遍历代码来知道查询凸轮的位置。

我试图用%C参数的Log4j的的PatternLayout拿到包名提到这里

但是我得到的输出是

2013-07-30-main--INFO -org.jdbcdslog.StatementLogger:java.sql.Statement.executeQuery: SELECT id, first, last, age FROM Employees;

如您所见,SQL查询已记录下来,但是它给出的类是org.jdbcdslog.StatementLogger。这不是所需要的,因为我想要从中触发查询的类的名称。

我在Log4j.properties文件中使用以下设置

log4j.appender.S.layout.ConversionPattern=%d{yyyy-MM-dd}-%t-%x-%-5p-%C:%m%n

发生这种情况是因为jdbcdslog将连接包装到JDBC驱动程序。我想知道如何获取触发查询的类的名称。


问题答案:

在http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html中,我看不到可以为原始方法指定变量的任何地方。同样查看log4j传递的事件看起来也不像是沿着事件链传递信息。(http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/spi/LoggingEvent.html)。

但是,如果您确实需要此功能,则可以采用一些解决方法,包括实现自己的DataSourceProxyBase。我从其下载页面下载了jdbcdslog源,看起来您可以扩展和覆盖DataSourceProxyBase类中的某些方法,并添加自己的记录器。然后指向您的设置以使用该数据源代理。

<bean id="dataSourceActual" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName">
        <value>java:comp/env/jdbc/MyDatasource</value>
    </property>
</bean>

<bean id="dataSource" class="com.me.MySoureConnectionPoolDataSourceProxy">
    <property name="targetDSDirect" ref="dataSourceActual" />
</bean>

如果下载了源代码,则可以开始遵循他们的程序,并查看要实现所需的内容而需要覆盖的内容。一个好的起点可能是类PooledConnectionLoggingProxy



 类似资料:
  • 问题内容: 我在Oracle数据库11g中使用Pl / SQL。 我正在编写一个将select语句作为参数(varchar2)的函数。该函数使用for循环遍历行并将格式应用于特定的列,并输出整个内容。基本上,我需要某种方式来获取列名,以便可以在顶部显示它们。我知道有多种方法可以对表执行此操作,但是由于传入了此查询,因此可能未选择所有列,可能已使用别名等。 有没有一种方法可以从此查询中选择列名? 理

  • 我尝试过各种各样的解决方案,从堆栈溢出没有运气。我想要什么。 我知道不同应用程序的包名 例如,我有一个包名。如何获取此应用程序图标并在ImageView中显示?

  • 问题内容: 我不是要命令。 我想创建一个与heidisql类似的应用程序,您可以在其中指定SQL查询,并在执行时返回包含代表查询结果的行和列的结果集。结果集中的列名称应与您在SQL查询中定义的所选列匹配。 在我的Python程序中(使用),我的查询仅返回行和列的结果,而不返回列的名称。在下面的例子中,列名应为,和。SQL最终将在程序外部。 我能想到的唯一方法是编写自己的SQL解析器逻辑以提取选定的

  • 问题内容: 我有一个视图vwGetData,它从两个表t1,t2中获取数据并具有字段: 我将在下面提供输入 我想在C#/ SQL中获得以下输出 或者 我想使用C#和SQL做到这一点。 问题答案: 您要做的第一件事是确保没有数据被返回: 现在假设您知道如何设置一个DataReader,您将执行以下操作: 您也可以查看SQL Catalog SYS视图。

  • 我正在尝试转换以下查询: 到标准Hibernate查询,但肯定错过了一些东西,因为我得到了以下错误: 当我尝试时: 很抱歉,表/列命名错误,但这是敏感数据。

  • 问题内容: 我需要从Hibernate查询中获取字符串,并稍后进行处理(因此无法使用来解决)。 我已经看过如何从HibernateCriteriaAPI(并非用于记录日志)中获取SQL,但是有了这种解决方法,我得到了SQL查询字符串,但是没有显示它显示’?’的参数值,有没有办法获得带有参数值的完整SQL字符串? 我的意思是,有了这种解决方案,我可以得到,但我需要得到… 有想法吗? 问题答案: 有一