Enable Mongodb log in Elixir application

Hi Family I am struggling to try to enable the mongo logs to show the queries that elixir sends to execute to mondo DB.

type or paste code here
defmodule PocketInformation.Application do
    use Application
    @impl true
    def start(_type, _args) do
      children =
              name: :mongodb,
              database: AppConfig.get_db_name(),
              hostname: AppConfig.get_db_host(),
              port: AppConfig.get_db_port(),
              username: AppConfig.get_db_user(),
              password: AppConfig.get_db_password(),
              log_queries: true ## is supposed that is set to true the logs queries will be shown
      opts = [strategy: :one_for_one, name: __MODULE__]
      Supervisor.start_link(children, opts)

I am using {:mongodb, "~> 1.0.0-beta.1"}, dependency.

I have tried using in my config file the following instruction :
config :mongodb, log_level: :debug ## not work
but not work

I have tried to use Mongo.logger.enable() ## got function Mongo.logger/0 is undefined or private

I have tried with : Application.put_env(:pocket_information, Mongo.Connection, log_queries: true) ## not work

but none of the options have worked so far.

What documentation suggests this option will work? I couldn’t find any mention of this in either mongodb or mongodb_ecto.

mongodb exposes a log option that expects a function (or MFA tuple) that is passed directly along to DBConnection.

mongodb_ecto exposes a log_level option that gets stashed in the adapter meta and then the connection uses that value to hook up the log option that mongodb expects

Even if you’re not using mongodb_ecto, the code in that last link could be helpful for writing your own function to pass as the log option to the bare mongodb driver.

1 Like

Try this driver GitHub - zookzook/elixir-mongodb-driver: MongoDB driver for Elixir

It logs like Ecto the messages sent to the MongoDB and has support for telemetry data as well.