Commit 3e599ae12deafee2d51d9af84bd851c1c5a5b184
1 parent
b7cc91ca
Exists in
master
and in
5 other branches
Incluindo opção que permite o envio de logs para o serviço do sistema quando disponível
Showing
3 changed files
with
70 additions
and
1 deletions
Show diff stats
configure.ac
| @@ -165,6 +165,7 @@ AC_PATH_TOOL([RPMBUILD], [rpmbuild], [no]) | @@ -165,6 +165,7 @@ AC_PATH_TOOL([RPMBUILD], [rpmbuild], [no]) | ||
| 165 | AC_PATH_TOOL([DPKGBUILD], [dpkg-buildpackage], [no]) | 165 | AC_PATH_TOOL([DPKGBUILD], [dpkg-buildpackage], [no]) |
| 166 | 166 | ||
| 167 | AC_CHECK_HEADER(libintl.h, AC_DEFINE(HAVE_LIBINTL)) | 167 | AC_CHECK_HEADER(libintl.h, AC_DEFINE(HAVE_LIBINTL)) |
| 168 | +AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG)) | ||
| 168 | AC_CHECK_LIB(intl, gettext,[INTL_LIBS="-lintl"]) | 169 | AC_CHECK_LIB(intl, gettext,[INTL_LIBS="-lintl"]) |
| 169 | 170 | ||
| 170 | AC_SUBST(INTL_LIBS) | 171 | AC_SUBST(INTL_LIBS) |
src/include/lib3270/config.h.in
src/pw3270/main.c
| @@ -42,6 +42,10 @@ | @@ -42,6 +42,10 @@ | ||
| 42 | #include "v3270/accessible.h" | 42 | #include "v3270/accessible.h" |
| 43 | #include <stdlib.h> | 43 | #include <stdlib.h> |
| 44 | 44 | ||
| 45 | +#if defined( HAVE_SYSLOG ) | ||
| 46 | + #include <syslog.h> | ||
| 47 | +#endif // HAVE_SYSLOG | ||
| 48 | + | ||
| 45 | #define ERROR_DOMAIN g_quark_from_static_string(PACKAGE_NAME) | 49 | #define ERROR_DOMAIN g_quark_from_static_string(PACKAGE_NAME) |
| 46 | 50 | ||
| 47 | /*--[ Statics ]--------------------------------------------------------------------------------------*/ | 51 | /*--[ Statics ]--------------------------------------------------------------------------------------*/ |
| @@ -55,9 +59,15 @@ | @@ -55,9 +59,15 @@ | ||
| 55 | #endif // HAVE_GTKMAC | 59 | #endif // HAVE_GTKMAC |
| 56 | 60 | ||
| 57 | #if defined( WIN32 ) | 61 | #if defined( WIN32 ) |
| 58 | - static const gchar * appname = PACKAGE_NAME; | 62 | + static const gchar * appname = PACKAGE_NAME; |
| 59 | #endif // WIN32 | 63 | #endif // WIN32 |
| 60 | 64 | ||
| 65 | +#if defined( HAVE_SYSLOG ) | ||
| 66 | + static gboolean log_to_syslog = FALSE; | ||
| 67 | +#endif // HAVE_SYSLOG | ||
| 68 | + | ||
| 69 | + | ||
| 70 | + | ||
| 61 | /*--[ Implement ]------------------------------------------------------------------------------------*/ | 71 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
| 62 | 72 | ||
| 63 | static int initialize(void) | 73 | static int initialize(void) |
| @@ -182,6 +192,52 @@ static gboolean optcolors(const gchar *option_name, const gchar *value, gpointer | @@ -182,6 +192,52 @@ static gboolean optcolors(const gchar *option_name, const gchar *value, gpointer | ||
| 182 | return FALSE; | 192 | return FALSE; |
| 183 | } | 193 | } |
| 184 | 194 | ||
| 195 | +#if defined( HAVE_SYSLOG ) | ||
| 196 | +static void g_syslog(const gchar *log_domain,GLogLevelFlags log_level,const gchar *message,gpointer user_data) | ||
| 197 | +{ | ||
| 198 | + static const struct _logtype | ||
| 199 | + { | ||
| 200 | + GLogLevelFlags log_level; | ||
| 201 | + int priority; | ||
| 202 | + const gchar * msg; | ||
| 203 | + } logtype[] = | ||
| 204 | + { | ||
| 205 | + { G_LOG_FLAG_RECURSION, LOG_INFO, "recursion" }, | ||
| 206 | + { G_LOG_FLAG_FATAL, LOG_ERR, "fatal error" }, | ||
| 207 | + | ||
| 208 | + /* GLib log levels */ | ||
| 209 | + { G_LOG_LEVEL_ERROR, LOG_ERR, "error" }, | ||
| 210 | + { G_LOG_LEVEL_CRITICAL, LOG_ERR, "critical error" }, | ||
| 211 | + { G_LOG_LEVEL_WARNING, LOG_ERR, "warning" }, | ||
| 212 | + { G_LOG_LEVEL_MESSAGE, LOG_ERR, "message" }, | ||
| 213 | + { G_LOG_LEVEL_INFO, LOG_INFO, "info" }, | ||
| 214 | + { G_LOG_LEVEL_DEBUG, LOG_DEBUG, "debug" }, | ||
| 215 | + }; | ||
| 216 | + | ||
| 217 | + int f; | ||
| 218 | + | ||
| 219 | + for(f=0;f<G_N_ELEMENTS(logtype);f++) | ||
| 220 | + { | ||
| 221 | + if(logtype[f].log_level == log_level) | ||
| 222 | + { | ||
| 223 | + gchar *ptr; | ||
| 224 | + gchar *text = g_strdup_printf("%s: %s %s",logtype[f].msg,log_domain ? log_domain : "",message); | ||
| 225 | + for(ptr = text;*ptr;ptr++) | ||
| 226 | + { | ||
| 227 | + if(*ptr < ' ') | ||
| 228 | + *ptr = ' '; | ||
| 229 | + } | ||
| 230 | + | ||
| 231 | + syslog(logtype[f].priority,"%s",text); | ||
| 232 | + g_free(text); | ||
| 233 | + return; | ||
| 234 | + } | ||
| 235 | + } | ||
| 236 | + | ||
| 237 | + syslog(LOG_INFO,"%s %s",log_domain ? log_domain : "", message); | ||
| 238 | +} | ||
| 239 | +#endif // HAVE_SYSLOG | ||
| 240 | + | ||
| 185 | int main(int argc, char *argv[]) | 241 | int main(int argc, char *argv[]) |
| 186 | { | 242 | { |
| 187 | static const gchar * session_name = PACKAGE_NAME; | 243 | static const gchar * session_name = PACKAGE_NAME; |
| @@ -252,6 +308,9 @@ int main(int argc, char *argv[]) | @@ -252,6 +308,9 @@ int main(int argc, char *argv[]) | ||
| 252 | { "host", 'h', 0, G_OPTION_ARG_STRING, &host, N_( "Host to connect"), NULL }, | 308 | { "host", 'h', 0, G_OPTION_ARG_STRING, &host, N_( "Host to connect"), NULL }, |
| 253 | { "colors", 'c', 0, G_OPTION_ARG_CALLBACK, optcolors, N_( "Set reported colors (8/16)" ), "16" }, | 309 | { "colors", 'c', 0, G_OPTION_ARG_CALLBACK, optcolors, N_( "Set reported colors (8/16)" ), "16" }, |
| 254 | { "systype", 't', 0, G_OPTION_ARG_STRING, &system, N_( "Host system type" ), "S390" }, | 310 | { "systype", 't', 0, G_OPTION_ARG_STRING, &system, N_( "Host system type" ), "S390" }, |
| 311 | +#if defined( HAVE_SYSLOG ) | ||
| 312 | + { "syslog", 'l', 0, G_OPTION_ARG_NONE, &log_to_syslog, N_( "Send messages to syslog" ), NULL }, | ||
| 313 | +#endif | ||
| 255 | 314 | ||
| 256 | { NULL } | 315 | { NULL } |
| 257 | }; | 316 | }; |
| @@ -292,6 +351,14 @@ int main(int argc, char *argv[]) | @@ -292,6 +351,14 @@ int main(int argc, char *argv[]) | ||
| 292 | return -1; | 351 | return -1; |
| 293 | } | 352 | } |
| 294 | 353 | ||
| 354 | +#if defined( HAVE_SYSLOG ) | ||
| 355 | + if(log_to_syslog) | ||
| 356 | + { | ||
| 357 | + openlog(g_get_prgname(), LOG_NDELAY|LOG_NDELAY, LOG_USER); | ||
| 358 | + g_log_set_default_handler(g_syslog,NULL); | ||
| 359 | + } | ||
| 360 | +#endif // HAVE_SYSLOG | ||
| 361 | + | ||
| 295 | } | 362 | } |
| 296 | 363 | ||
| 297 | { | 364 | { |