如何在Vapor 3 / Fluent中记录SQL语句?

时间:2018-10-27 16:15:07

标签: postgresql vapor

在Vapor 2中,您可以执行以下操作:

let query = <some fluent query object>
logger?.debug(query)

它将打印出完整的SQL语句,但是我现在在Vapor 3中没有看到有关如何执行此操作的任何文档。

如何查看QueryBuilder正在生成什么SQL?

1 个答案:

答案 0 :(得分:6)

感谢Nick的评论,他为我指出了正确的文档集。这可以通过使用enableLogging方法来完成。所以现在我的configure.swift包含以下代码:

let dbConfig: PostgreSQLDatabaseConfig
if let url = Environment.get("DATABASE_URL"), let psqlConfig = PostgreSQLDatabaseConfig(url: url, transport: .unverifiedTLS) {
    dbConfig = psqlConfig
} else {
    dbConfig = ...something for the local db...
}

let postgresql = PostgreSQLDatabase(config: dbConfig)

/// Register the configured SQLite database to the database config.
var databases = DatabasesConfig()
databases.enableLogging(on: .psql)
databases.add(database: postgresql, as: .psql)
services.register(databases)

重要的一行是从底部开始的第三行。一段时间以来,我一直试图在PostgreSQLDatabaseConfig上启用调试,所以以后对任何人来说,请注意,您正在DatabasesConfig对象上启用了调试。