Line data Source code
1 : // Copyright (c) 2006-2023 Made to Order Software Corp. All Rights Reserved 2 : // 3 : // https://snapwebsites.org/project/snaplogger 4 : // contact@m2osw.com 5 : // 6 : // This program is free software; you can redistribute it and/or modify 7 : // it under the terms of the GNU General Public License as published by 8 : // the Free Software Foundation; either version 2 of the License, or 9 : // (at your option) any later version. 10 : // 11 : // This program is distributed in the hope that it will be useful, 12 : // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 : // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 : // GNU General Public License for more details. 15 : // 16 : // You should have received a copy of the GNU General Public License along 17 : // with this program; if not, write to the Free Software Foundation, Inc., 18 : // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 : 20 : // self 21 : // 22 : #include "catch_main.h" 23 : 24 : 25 : // snaplogger lib 26 : // 27 : #include <snaplogger/buffer_appender.h> 28 : #include <snaplogger/exception.h> 29 : #include <snaplogger/format.h> 30 : #include <snaplogger/logger.h> 31 : #include <snaplogger/map_diagnostic.h> 32 : #include <snaplogger/message.h> 33 : #include <snaplogger/severity.h> 34 : #include <snaplogger/version.h> 35 : 36 : 37 : // C lib 38 : // 39 : #include <unistd.h> 40 : #include <netdb.h> 41 : #include <sys/param.h> 42 : 43 : 44 : 45 : 46 : 47 1 : CATCH_TEST_CASE("appender", "[appender]") 48 : { 49 1 : CATCH_START_SECTION("appender: Create") 50 : { 51 1 : snaplogger::set_diagnostic(snaplogger::DIAG_KEY_PROGNAME, "appender"); 52 : 53 5 : snaplogger::appender::pointer_t unknown(snaplogger::create_appender("unknown", "test-buffer")); 54 1 : CATCH_REQUIRE(unknown == nullptr); 55 : 56 5 : snaplogger::appender::pointer_t buffer(snaplogger::create_appender("buffer", "test-buffer")); 57 1 : CATCH_REQUIRE(buffer != nullptr); 58 : 59 1 : char const * cargv[] = 60 : { 61 : "/usr/bin/daemon", 62 : nullptr 63 : }; 64 1 : int const argc(sizeof(cargv) / sizeof(cargv[0]) - 1); 65 1 : char ** argv = const_cast<char **>(cargv); 66 : 67 1 : advgetopt::options_environment environment_options; 68 1 : environment_options.f_project_name = "test-logger"; 69 1 : environment_options.f_environment_flags = advgetopt::GETOPT_ENVIRONMENT_FLAG_SYSTEM_PARAMETERS; 70 1 : advgetopt::getopt opts(environment_options); 71 1 : opts.parse_program_name(argv); 72 1 : opts.parse_arguments(argc, argv, advgetopt::option_source_t::SOURCE_COMMAND_LINE); 73 1 : buffer->set_config(opts); 74 : 75 1 : snaplogger::format::pointer_t f(std::make_shared<snaplogger::format>("${severity}: ${message}")); 76 1 : buffer->set_format(f); 77 : 78 1 : snaplogger::logger::pointer_t l(snaplogger::logger::get_instance()); 79 1 : l->add_appender(buffer); 80 : 81 1 : SNAP_LOG_FATAL << "Appender created by name" << SNAP_LOG_SEND; 82 1 : CATCH_REQUIRE(std::dynamic_pointer_cast<snaplogger::buffer_appender>(buffer)->str() == "fatal: Appender created by name\n"); 83 : 84 1 : l->reset(); 85 1 : } 86 1 : CATCH_END_SECTION() 87 1 : } 88 : 89 : 90 : 91 : // vim: ts=4 sw=4 et