glusterfs

Форк
0
/
logchecks.c 
190 строк · 6.3 Кб
1
/*
2
 * Copyright (c) 2013 Red Hat, Inc. <http://www.redhat.com>
3
 * This file is part of GlusterFS.
4
 *
5
 * This file is licensed to you under your choice of the GNU Lesser
6
 * General Public License, version 3 or any later version (LGPLv3 or
7
 * later), or the GNU General Public License, version 2 (GPLv2), in all
8
 * cases as published by the Free Software Foundation.
9
 */
10

11
#include <stdio.h>
12
#include <unistd.h>
13

14
#include <glusterfs/glusterfs.h>
15
#include <glusterfs/globals.h>
16
#include <glusterfs/logging.h>
17

18
#include "logchecks-messages.h"
19
#include "../../libglusterfs/src/logging.h"
20

21
glusterfs_ctx_t *ctx = NULL;
22

23
#define TEST_FILENAME "/tmp/logchecks.log"
24
#define GF_LOG_CONTROL_FILE "/etc/glusterfs/logger.conf"
25

26
int
27
go_log(void)
28
{
29
    /*** gf_msg ***/
30
    gf_msg("logchecks", GF_LOG_INFO, 0, logchecks_msg_1);
31
    gf_msg("logchecks", GF_LOG_INFO, 22, logchecks_msg_2, 42, "Forty-Two", 42);
32
    /* change criticality */
33
    gf_msg("logchecks", GF_LOG_CRITICAL, 0, logchecks_msg_3);
34
    gf_msg("logchecks", GF_LOG_CRITICAL, 22, logchecks_msg_4, 42, "Forty-Two",
35
           42);
36

37
    /*** msg_nomem ***/
38
    gf_msg_nomem("logchecks", GF_LOG_ALERT, 555);
39
    gf_msg_nomem("logchecks", GF_LOG_INFO, 555);
40

41
    /*** msg_plain ***/
42
    gf_msg_plain(GF_LOG_INFO,
43
                 "Informational: gf_msg_plain with"
44
                 " args %d:%s:%x",
45
                 42, "Forty-Two", 42);
46
    gf_msg_plain(GF_LOG_ALERT,
47
                 "Alert: gf_msg_plain with"
48
                 " args %d:%s:%x",
49
                 42, "Forty-Two", 42);
50

51
    /*** msg_plain_nomem ***/
52
    gf_msg_plain_nomem(GF_LOG_INFO, "Informational: gf_msg_plain_nomem");
53
    gf_msg_plain_nomem(GF_LOG_ALERT, "Alert: gf_msg_plain_nomem");
54

55
    /*** msg_backtrace_nomem ***/
56
    // TODO: Need to create a stack depth and then call
57
    gf_msg_backtrace_nomem(GF_LOG_INFO, 5);
58
    gf_msg_backtrace_nomem(GF_LOG_ALERT, 5);
59

60
    /*** gf_msg_callingfn ***/
61
    // TODO: Need to create a stack depth and then call
62
    gf_msg_callingfn("logchecks", GF_LOG_INFO, 0, logchecks_msg_7);
63
    gf_msg_callingfn("logchecks", GF_LOG_INFO, 0, logchecks_msg_8, 42,
64
                     "Forty-Two", 42);
65
    gf_msg_callingfn("logchecks", GF_LOG_CRITICAL, 0, logchecks_msg_9);
66
    gf_msg_callingfn("logchecks", GF_LOG_CRITICAL, 0, logchecks_msg_10, 42,
67
                     "Forty-Two", 42);
68

69
    /*** gf_msg_debug ***/
70
    gf_msg_debug("logchecks", 0, "Debug: Hello World!!!");
71
    gf_msg_debug("logchecks", 22, "Debug: With args %d:%s:%x", 42, "Forty-Two",
72
                 42);
73

74
    /*** gf_msg_trace ***/
75
    gf_msg_trace("logchecks", 0, "Trace: Hello World!!!");
76
    gf_msg_trace("logchecks", 22, "Trace: With args %d:%s:%x", 42, "Forty-Two",
77
                 42);
78

79
    /*** gf_msg_backtrace ***/
80
    // TODO: Test with lower callstr values to check truncation
81

82
    return 0;
83
}
84

85
int
86
main(int argc, char *argv[])
87
{
88
    int ret = -1;
89

90
    unlink(GF_LOG_CONTROL_FILE);
91
    creat(GF_LOG_CONTROL_FILE, O_RDONLY);
92
    ctx = glusterfs_ctx_new();
93
    if (!ctx)
94
        return -1;
95

96
    ret = glusterfs_globals_init(ctx);
97
    if (ret) {
98
        printf("Error from glusterfs_globals_init [%s]\n", strerror(errno));
99
        return ret;
100
    }
101

102
    /* Pre init test, message should not be printed */
103
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_19);
104

105
    THIS->ctx = ctx;
106

107
    /* TEST 1: messages before initializing the log, goes to stderr
108
     * and syslog based on criticality */
109
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
110
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_12);
111
    go_log();
112
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
113

114
    /* TEST 2: messages post initialization, goes to glusterlog and
115
     * syslog based on severity */
116
    ret = gf_log_init(ctx, TEST_FILENAME, "logchecks");
117
    if (ret != 0) {
118
        printf("Error from gf_log_init [%s]\n", strerror(errno));
119
        return -1;
120
    }
121
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
122
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_13);
123
    go_log();
124
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
125

126
    /* TEST 3: Test rotation */
127
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
128
    gf_log_logrotate(0);
129
    gf_msg("logchecks", GF_LOG_CRITICAL, 0, logchecks_msg_5);
130
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
131

132
    /* TEST 4: Check flush, nothing noticeable should occur :) */
133
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
134
    gf_log_flush(ctx);
135
    gf_msg("logchecks", GF_LOG_CRITICAL, 0, logchecks_msg_6);
136
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
137

138
    /* TEST 5: Change format */
139
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
140
    gf_log_set_logformat(gf_logformat_traditional);
141
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_14);
142
    go_log();
143
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
144

145
    /* TEST 6: Change level */
146
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
147
    gf_log_set_loglevel(ctx, GF_LOG_CRITICAL);
148
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_15);
149
    go_log();
150
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
151

152
    /* Reset to run with syslog */
153
    gf_log_set_logformat(gf_logformat_withmsgid);
154
    gf_log_set_loglevel(ctx, GF_LOG_INFO);
155

156
    /* Run tests with logger changed to syslog */
157
    /* TEST 7: No more gluster logs */
158
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
159
    gf_log_set_logger(gf_logger_syslog);
160
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_16);
161
    go_log();
162
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
163

164
    /* TEST 8: Change format */
165
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
166
    gf_log_set_logformat(gf_logformat_traditional);
167
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_14);
168
    go_log();
169
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
170

171
    /* TEST 9: Change level */
172
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
173
    gf_log_set_loglevel(ctx, GF_LOG_CRITICAL);
174
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_15);
175
    go_log();
176
    gf_msg("logchecks", GF_LOG_ALERT, 0, logchecks_msg_11);
177

178
    // TODO: signal crash prints, but not yet feasible here
179
    // TODO: Graph printing
180
    // TODO: Multi threaded logging
181

182
    /* Close out the logging */
183
    gf_log_fini(ctx);
184
    gf_log_globals_fini();
185

186
    unlink(GF_LOG_CONTROL_FILE);
187
    unlink(TEST_FILENAME);
188

189
    return 0;
190
}
191

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.