Logging

    You can enable different types of logging in connection options:

    1. {
    2. host: "localhost",
    3. ...
    4. logging: ["query", "error"]
    5. }

    If you want to enable logging of failed queries only then only add error:

    1. {
    2. host: "localhost",
    3. ...
    4. logging: ["error"]
    5. }

    There are other options you can use:

    • query - logs all queries.
    • schema - logs the schema build process.
    • warn - logs internal orm warnings.
    • info - logs internal orm informative messages.
    • log - logs internal orm log messages.

    If you have performance issues, you can log queries that take too much time to executeby setting maxQueryExecutionTime in connection options:

    1. {
    2. host: "localhost",
    3. maxQueryExecutionTime: 1000
    4. }

    This code will log all queries which run more then 1 second.

    TypeORM ships with 4 different types of logger:

    • advanced-console - this is the default logger which logs all messages into the console using colorand sql syntax highlighting (using ).
    • simple-console - this is a simple console logger which is exactly the same as the advanced logger, but it does not use any color highlighting.This logger can be used if you have problems / or don’t like colorized logs.
    • file - this logger writes all logs into ormlogs.log in the root folder of your project (near package.json and ormconfig.json).
    • debug - this logger uses debug package, to turn on logging set your env variable DEBUG=typeorm:* (note logging option has no effect on this logger).
    1. {
    2. host: "localhost",
    3. ...
    4. logging: true,
    5. logger: "file"
    6. }

    You can create your own logger class by implementing the Logger interface:

    And specify it in connection options:

    1. import {createConnection} from "typeorm";
    2. import {MyCustomLogger} from "./logger/MyCustomLogger";
    3. name: "mysql",
    4. type: "mysql",
    5. host: "localhost",
    6. port: 3306,
    7. username: "test",
    8. password: "test",
    9. database: "test",
    10. logger: new MyCustomLogger()
    11. });

    If you defined your connection options in the ormconfig file,then you can use it and override it in the following way:

    1. import {createConnection, getConnectionOptions} from "typeorm";
    2. import {MyCustomLogger} from "./logger/MyCustomLogger";
    3. // getConnectionOptions will read options from your ormconfig file
    4. // and return it in connectionOptions object
    5. // then you can simply append additional properties to it
    6. getConnectionOptions().then(connectionOptions => {
    7. return createConnection(Object.assign(connectionOptions, {
    8. logger: new MyCustomLogger()
    9. }))
    10. });