Fl4m3Ph03n1x

Fl4m3Ph03n1x

How to hide logs in some tests but not in others?

Background

I have library that logs messages depending on the value of disable_logging:

unless Application.get(:my_app, :disable_logging, false), do:
  Logger.info("Hello World!")

Depending on MIX_ENV I have a config for each setup:

#test.config
use Mix.Config
config :my_app, disable_logging: true

Problem

The issue here is that I don’t want log messages all over my test results. So, naturally, I could set the disable_logging to true and be done with it.

However, if I do it, I can’t test whether or not the Logger is being called and if it’s being called with the correct values:

Question

So, given this I have some questions:

  1. Is there a way to activate logs but without outputting them to the terminal when I am running tests?
  2. Is there a way to only activate logs for some tests in my test suite?

Marked As Solved

lpil

lpil

Creator of Gleam

Alternatively update test_helper.exs to have ExUnit.start(capture_log: true) and then you can make assertions about logging with capture_log as per usual, but it won’t print the log output in tests where you don’t.

Also Liked

lpil

lpil

Creator of Gleam

This is built into the Elixir logger, users can purge logging statements from applications. :slight_smile:

You can remove your logging logic and instead instruct users to add this config if they wish to remove your logging.

config :logger,
  compile_time_purge_matching: [
    [application: :foo]
  ]

https://hexdocs.pm/logger/Logger.html#module-application-configuration

  • If I do it your way, will I be able to make my tests async again? Or the fact I am capturing logs means I can never have them be async?

Using capture log does not prevent you from being able to run your test async, I would run all the tests async using this method.

Where Next?

Popular in Questions Top

stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
Brian
What is the proper way to load a module from a file in to IEX? In the python world, doing something like this pretty standard: from ....
New
albydarned
Hello all! I am typing this post from my new MacBook Pro with the M1 chip. I’m loving it so far, and will probably use it as my daily dr...
New
Jim
As a follow up to my earlier question: I have the code compiling and running but not getting a successful login from the rest server. ...
New
dokuzbir
Hello, I am trying to convert my lists to string without losing brackets.For start i have 3 map. They look like these buyer = %{ id: ...
New
aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
ashish173
I am using Ecto timestamps with postgres, I can see the timestamps() use the :naive_dateime but for my use case I wanted to store the ti...
New
gonzofish
I’m currently trying to understand how to join three tables using Ecto. All the examples I’ve seen use 2, so maybe I’m just missing somet...
New
jc00ke
Expanding on this topic: https://forum.elixirforum.net/t/map-typespec-question/19217 Let’s say I have a map with required and optional k...
New
jay1
Why is it that the mnesia database isn’t the most preferred database for use in Elixir/Phoenix?
New

Other popular topics Top

josevalim
Hi everyone, One of the features added to Elixir early on to help integration with Erlang code was the idea of overridable function defi...
New
shahryarjb
Hello, I get Persian date from my client and convert it to normal calendar like this: def jalali_string_to_miladi_english_number(persi...
New
chrismccord
This release brings a number of exciting features, including integration with the new Phoenix LiveDashboard and Phoenix LiveView. There h...
New
polypush135
As many of you may have realized by now (sorry for all the posts here) I’ve been working on a db problem where I’m trying to aggregate a ...
New
script
If I have a string “1000 cfu/ml” . I want to remove the characters and / and space . So the string is like this "1000" What is the ...
New
mcarvalho
What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.
New
shahryarjb
Hello, I have map which I want to convert it to string like this: the map: %{last_name: "tavakkoli", name: "shahryar"} the string I ne...
New
Fl4m3Ph03n1x
About me? ( if you have nothing better to do than reading about some random guy in the internet :stuck_out_tongue: ) Hello all, this is ...
New
joeerl
Hello again - after a longish gap I’ve decided I really must dig into Elixir and see what’s been happening here - so I have a few questio...
New
magnetic
Hey :wave:t3: Elixir community, I’ve been learning Elixir, and working on some side projects. My editor of choice is VSCode, and althoug...
New

We're in Beta

About us Mission Statement