如何在 symfony 2 和教义 2 中自定义 sql 日志?

Posted

技术标签:

【中文标题】如何在 symfony 2 和教义 2 中自定义 sql 日志?【英文标题】:How to make custom sql log in symfony 2 and doctrine 2? 【发布时间】:2011-04-27 15:33:10 【问题描述】:

我需要添加 sql 日志记录才能在本机 WebProfileBundle 中工作。 当我在应用程序配置中执行一个默认连接时,我看到了 sql 在我的日志中查询。但是我的应用程序使用许多连接到许多数据库 服务器,所以我无法将所有可能的连接添加到配置文件。

我创建运行时连接,即:

$config = array(
        'user' => 'user1',
        'password' => 'pass1',
        'driver' => 'pdo_mysql',
        'port' => 3306,
);
$conn = DriverManager::getConnection($config);

那我想,应该是这样的命令

$conn->getConfiguration()->getSQLLogger($someLoggerObject);

我尝试用 DependencyInjection 解决这个问题, 以 DoctrineBundle 为例。但是没有运气。

任何有关实时代码或正确文档链接的帮助都会很棒

【问题讨论】:

【参考方案1】:

我的 conf 中有这个:

$config = new Configuration;
/** configuration stuff */
$config->setSQLLogger(MyLogger::getInstance());

$connectionOptions = array(
            'driver' => 'pdo_mysql',
            'user' => DB_USER,
            'password' => DB_PASS,
            'host' => DB_HOST,
            'dbname' => DB_NAME,
            'charset' => 'utf8',
            'driverOptions' => array(
                    'charset' => 'utf8'
            )
    );
$em = EntityManager::create($connectionOptions, $config);

我使用 Zend + Doctrine2 并且在我的引导程序中,我的记录器是一个单例(这就是 getInstance 的原因)。我从未使用过 DriverManager,但我希望这会有所帮助。

【讨论】:

以上是关于如何在 symfony 2 和教义 2 中自定义 sql 日志?的主要内容,如果未能解决你的问题,请参考以下文章

枚举和 Symfony 表单的教义集合

如何使用 symfony 在教义查询构建器中选择表之间的特定连接?

教义自定义数据类型

Symfony 2 教义左连接

Symfony2 - 在树枝中自定义 form_start 函数

教义 2,如何在左连接结果集中获取属性? [关闭]