Skip to main content
Glama
test_logger.erl3.03 kB
%% Copyright (c) Meta Platforms, Inc. and affiliates. %% %% This source code is licensed under both the MIT license found in the %% LICENSE-MIT file in the root directory of this source tree and the Apache %% License, Version 2.0 found in the LICENSE-APACHE file in the root directory %% of this source tree. %% % @format -module(test_logger). -compile(warn_missing_spec_all). -include_lib("common/include/buck_ct_records.hrl"). -export([set_up_logger/2, set_up_logger/3, flush/0, get_std_out/2, get_log_file/2, configure_logger/1]). -define(STUB_TEST_ENV, #test_env{ suite = ?MODULE, tests = [], suite_path = [], output_dir = [], dependencies = [], test_spec_file = [], output_format = json, config_files = [], providers = [], ct_opts = [], extra_flags = [], common_app_env = #{}, erl_cmd = [], artifact_annotation_mfa = fun artifact_annotations:default_annotation/1 }). -spec set_up_logger(file:filename(), atom()) -> ok. set_up_logger(LogDir, AppName) -> set_up_logger(LogDir, AppName, false). -spec set_up_logger(file:filename(), atom(), boolean()) -> ok. set_up_logger(LogDir, AppName, StandaloneConfig) -> Log = get_log_file(LogDir, AppName), filelib:ensure_dir(Log), StdOut = get_std_out(LogDir, AppName), filelib:ensure_dir(StdOut), {ok, LogFileOpened} = file:open(StdOut, [write]), case StandaloneConfig of true -> [logger:remove_handler(Id) || Id <- logger:get_handler_ids()]; false -> group_leader( LogFileOpened, self() ) end, configure_logger(Log), test_artifact_directory:link_to_artifact_dir(StdOut, LogDir, ?STUB_TEST_ENV). -spec configure_logger(file:filename_all()) -> ok. configure_logger(LogFile) -> ok = logger:set_primary_config(#{ level => all, filter_default => log }), ok = logger:add_handler( file_handler, logger_std_h, #{ config => #{ file => LogFile, filesync_repeat_interval => 100 }, filter_default => log, formatter => {logger_formatter, #{ template => [ time, " ", pid, {file, [" ", file], []}, {line, [":", line], []}, " == ", level, ": ", msg, "\n" ] }} } ). -spec flush() -> ok | {error, term()}. flush() -> logger_std_h:filesync(file_handler). -spec get_std_out(file:filename(), atom()) -> file:filename_all(). get_std_out(LogDir, AppName) -> filename:join(LogDir, io_lib:format("~p.stdout.txt", [AppName])). -spec get_log_file(file:filename(), atom()) -> file:filename_all(). get_log_file(LogDir, AppName) -> filename:join(LogDir, io_lib:format("~p.log", [AppName])).

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/systeminit/si'

If you have feedback or need assistance with the MCP directory API, please join our Discord server