1
0
mirror of https://github.com/gluster/glusterfs.git synced 2026-02-06 18:48:16 +01:00
Files
glusterfs/tests/basic/logchecks.c
Yaniv Kaul 364230f587 refactor logging.c - remove 'THIS' where possible, use 'log instead of 'ctx' where possible (#3451)
* logging: reduce no. of calls to 'THIS', use 'ctx' or 'this' where possible

In many places, we can instead of calling 'THIS' either pass it or the context directly.
Changed functions and callers where it made sense.

Updates: #3426
Signed-off-by: Yaniv Kaul <ykaul@redhat.com>

* gf_time_fmt_tv_FT() - pass log pointer instead of ctx

Preparation for using log pointer across logging.c

Updates: #1000
Signed-off-by: Yaniv Kaul <ykaul@redhat.com>

* logging.c: refactor ctx->log and use log where possible

In many function, we pass ctx and only use ctx->log. Refactor accordingly.

Updates: #3426
Signed-off-by: Yaniv Kaul <ykaul@redhat.com>

* logging.c: appstr could be a pointer, not a pointer to a pointer

Unsure why, but there was an additional indirection which did not seem to be really used anywhere.

Updates: #3426
Signed-off-by: Yaniv Kaul <ykaul@redhat.com>

* logging.c: pass 'buf' parameter instead of all its variables to *repetitions() functions.

Seems easier to read.

Updates: #3426
Signed-off-by: Yaniv Kaul <ykaul@redhat.com>

* Remove unused variable in  _gf_msg_internal()

* logging.h: remove padding from structure

Updates: #3426
Signed-off-by: Yaniv Kaul <ykaul@redhat.com>

* Simplify glusterd_check_log_level() function

Signed-off-by: Yaniv Kaul <ykaul@redhat.com>
2022-09-19 10:54:07 +02:00

191 lines
6.3 KiB
C

/*
* Copyright (c) 2013 Red Hat, Inc. <http://www.redhat.com>
* This file is part of GlusterFS.
*
* This file is licensed to you under your choice of the GNU Lesser
* General Public License, version 3 or any later version (LGPLv3 or
* later), or the GNU General Public License, version 2 (GPLv2), in all
* cases as published by the Free Software Foundation.
*/
#include <stdio.h>
#include <unistd.h>
#include <glusterfs/glusterfs.h>
#include <glusterfs/globals.h>
#include <glusterfs/logging.h>
#include "logchecks-messages.h"
#include "../../libglusterfs/src/logging.h"
glusterfs_ctx_t *ctx = NULL;
#define TEST_FILENAME "/tmp/logchecks.log"
#define GF_LOG_CONTROL_FILE "/etc/glusterfs/logger.conf"
int
go_log(void)
{
/*** gf_msg ***/
gf_msg("logchecks", GF_LOG_INFO, 0, logchecks_msg_1);
gf_msg("logchecks", GF_LOG_INFO, 22, logchecks_msg_2, 42, "Forty-Two", 42);
/* change criticality */
gf_msg("logchecks", GF_LOG_CRITICAL, 0, logchecks_msg_3);
gf_msg("logchecks", GF_LOG_CRITICAL, 22, logchecks_msg_4, 42, "Forty-Two",
42);
/*** msg_nomem ***/
gf_msg_nomem("logchecks", GF_LOG_ALERT, 555);
gf_msg_nomem("logchecks", GF_LOG_INFO, 555);
/*** msg_plain ***/
gf_msg_plain(GF_LOG_INFO,
"Informational: gf_msg_plain with"
" args %d:%s:%x",
42, "Forty-Two", 42);
gf_msg_plain(GF_LOG_ALERT,
"Alert: gf_msg_plain with"
" args %d:%s:%x",
42, "Forty-Two", 42);
/*** msg_plain_nomem ***/
gf_msg_plain_nomem(GF_LOG_INFO, "Informational: gf_msg_plain_nomem");
gf_msg_plain_nomem(GF_LOG_ALERT, "Alert: gf_msg_plain_nomem");
/*** msg_backtrace_nomem ***/
// TODO: Need to create a stack depth and then call
gf_msg_backtrace_nomem(GF_LOG_INFO, 5);
gf_msg_backtrace_nomem(GF_LOG_ALERT, 5);
/*** gf_msg_callingfn ***/
// TODO: Need to create a stack depth and then call
gf_msg_callingfn("logchecks", GF_LOG_INFO, 0, logchecks_msg_7);
gf_msg_callingfn("logchecks", GF_LOG_INFO, 0, logchecks_msg_8, 42,
"Forty-Two", 42);
gf_msg_callingfn("logchecks", GF_LOG_CRITICAL, 0, logchecks_msg_9);
gf_msg_callingfn("logchecks", GF_LOG_CRITICAL, 0, logchecks_msg_10, 42,
"Forty-Two", 42);
/*** gf_msg_debug ***/
gf_msg_debug("logchecks", 0, "Debug: Hello World!!!");
gf_msg_debug("logchecks", 22, "Debug: With args %d:%s:%x", 42, "Forty-Two",
42);
/*** gf_msg_trace ***/
gf_msg_trace("logchecks", 0, "Trace: Hello World!!!");
gf_msg_trace("logchecks", 22, "Trace: With args %d:%s:%x", 42, "Forty-Two",
42);
/*** gf_msg_backtrace ***/
// TODO: Test with lower callstr values to check truncation
return 0;
}
int
main(int argc, char *argv[])
{
int ret = -1;
unlink(GF_LOG_CONTROL_FILE);
creat(GF_LOG_CONTROL_FILE, O_RDONLY);
ctx = glusterfs_ctx_new();
if (!ctx)
return -1;
ret = glusterfs_globals_init(ctx);
if (ret) {
printf("Error from glusterfs_globals_init [%s]\n", strerror(errno));
return ret;
}
/* Pre init test, message should not be printed */
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_19);
THIS->ctx = ctx;
/* TEST 1: messages before initializing the log, goes to stderr
* and syslog based on criticality */
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_12);
go_log();
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
/* TEST 2: messages post initialization, goes to glusterlog and
* syslog based on severity */
ret = gf_log_init(ctx, TEST_FILENAME, "logchecks");
if (ret != 0) {
printf("Error from gf_log_init [%s]\n", strerror(errno));
return -1;
}
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_13);
go_log();
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
/* TEST 3: Test rotation */
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
gf_log_logrotate(0);
gf_msg("logchecks", GF_LOG_CRITICAL, 0, logchecks_msg_5);
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
/* TEST 4: Check flush, nothing noticeable should occur :) */
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
gf_log_flush(ctx);
gf_msg("logchecks", GF_LOG_CRITICAL, 0, logchecks_msg_6);
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
/* TEST 5: Change format */
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
gf_log_set_logformat(gf_logformat_traditional);
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_14);
go_log();
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
/* TEST 6: Change level */
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
gf_log_set_loglevel(ctx, GF_LOG_CRITICAL);
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_15);
go_log();
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
/* Reset to run with syslog */
gf_log_set_logformat(gf_logformat_withmsgid);
gf_log_set_loglevel(ctx, GF_LOG_INFO);
/* Run tests with logger changed to syslog */
/* TEST 7: No more gluster logs */
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
gf_log_set_logger(gf_logger_syslog);
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_16);
go_log();
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
/* TEST 8: Change format */
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
gf_log_set_logformat(gf_logformat_traditional);
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_14);
go_log();
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
/* TEST 9: Change level */
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
gf_log_set_loglevel(ctx, GF_LOG_CRITICAL);
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_15);
go_log();
gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
// TODO: signal crash prints, but not yet feasible here
// TODO: Graph printing
// TODO: Multi threaded logging
/* Close out the logging */
gf_log_fini(ctx);
gf_log_globals_fini();
unlink(GF_LOG_CONTROL_FILE);
unlink(TEST_FILENAME);
return 0;
}