X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fmisc%2Flogger.c;h=e8347227c3d6ac559d8f1b92fc910acb68f36de6;hb=27cdf52e972a7bfbde24c7e42b3b8144cc83a7e2;hp=9a8a9d020e76ec0df99b6bdbe91672714b83929a;hpb=2053866380d8c54371c519e5619566e3f2164226;p=vlc diff --git a/modules/misc/logger.c b/modules/misc/logger.c index 9a8a9d020e..e8347227c3 100644 --- a/modules/misc/logger.c +++ b/modules/misc/logger.c @@ -32,15 +32,11 @@ #include #include #include -#include +#include #include #include -#ifdef UNDER_CE -# define _IONBF 0x0004 -#endif - #define MODE_TEXT 0 #define MODE_HTML 1 #define MODE_SYSLOG 2 @@ -72,7 +68,7 @@ " \n" \ "\n" -#if HAVE_SYSLOG_H +#ifdef HAVE_SYSLOG_H #include #endif @@ -158,6 +154,10 @@ enum { fac_entries = sizeof(fac_name)/sizeof(fac_name[0]) }; #endif +#define LOGVERBOSE_TEXT N_("Verbosity") +#define LOGVERBOSE_LONGTEXT N_("Select the verbosity to use for log or -1 to " \ +"use the same verbosity given by --verbose.") + vlc_module_begin () set_shortname( N_( "Logging" ) ) set_description( N_("File logging") ) @@ -175,7 +175,9 @@ vlc_module_begin () SYSLOG_FACILITY_LONGTEXT, true ) change_string_list( fac_name, fac_name, 0 ) #endif - + add_integer( "log-verbose", -1, NULL, LOGVERBOSE_TEXT, LOGVERBOSE_LONGTEXT, + false ) + add_obsolete_string( "rrd-file" ) set_capability( "interface", 0 ) @@ -230,14 +232,17 @@ static int Open( vlc_object_t *p_this ) if( p_sys->msg.i_mode != MODE_SYSLOG ) { - char *psz_file = config_GetPsz( p_intf, "logfile" ); + char *psz_file = var_InheritString( p_intf, "logfile" ); if( !psz_file ) { #ifdef __APPLE__ - if( asprintf( &psz_file, "%s/"LOG_DIR"/%s", config_GetHomeDir(), + char *home = config_GetUserDir(VLC_DOCUMENTS_DIR); + if( home == NULL + || asprintf( &psz_file, "%s/"LOG_DIR"/%s", home, (p_sys->msg.i_mode == MODE_HTML) ? LOG_FILE_HTML : LOG_FILE_TEXT ) == -1 ) psz_file = NULL; + free(home); #else switch( p_sys->msg.i_mode ) { @@ -256,7 +261,7 @@ static int Open( vlc_object_t *p_this ) /* Open the log file and remove any buffering for the stream */ msg_Dbg( p_intf, "opening logfile `%s'", psz_file ); - p_sys->msg.p_file = utf8_fopen( psz_file, "at" ); + p_sys->msg.p_file = vlc_fopen( psz_file, "at" ); if( p_sys->msg.p_file == NULL ) { msg_Err( p_intf, "error opening logfile `%s'", psz_file ); @@ -364,16 +369,26 @@ static void Close( vlc_object_t *p_this ) static void Overflow (msg_cb_data_t *p_sys, msg_item_t *p_item, unsigned overruns) { VLC_UNUSED(overruns); - int verbosity = var_CreateGetInteger( p_sys->p_intf, "verbose" ); - int priority = 0; + int verbosity = var_CreateGetInteger( p_sys->p_intf, "log-verbose" ); + if (verbosity == -1) + verbosity = var_CreateGetInteger( p_sys->p_intf, "verbose" ); switch( p_item->i_type ) { - case VLC_MSG_WARN: priority = 1; break; - case VLC_MSG_DBG: priority = 2; break; + case VLC_MSG_INFO: + case VLC_MSG_ERR: + if( verbosity < 0 ) return; + break; + case VLC_MSG_WARN: + if( verbosity < 1 ) return; + break; + case VLC_MSG_DBG: + if( verbosity < 2 ) return; + break; } - if (verbosity < priority) - return; + + + int canc = vlc_savecancel(); switch( p_sys->i_mode ) { @@ -390,6 +405,8 @@ static void Overflow (msg_cb_data_t *p_sys, msg_item_t *p_item, unsigned overrun TextPrint( p_item, p_sys->p_file ); break; } + + vlc_restorecancel( canc ); } static const char ppsz_type[4][11] = { @@ -401,8 +418,8 @@ static const char ppsz_type[4][11] = { static void TextPrint( const msg_item_t *p_msg, FILE *p_file ) { - fprintf( p_file, "%s%s%s\n", p_msg->psz_module, ppsz_type[p_msg->i_type], - p_msg->psz_msg ); + utf8_fprintf( p_file, "%s%s%s\n", p_msg->psz_module, + ppsz_type[p_msg->i_type], p_msg->psz_msg ); } #ifdef HAVE_SYSLOG_H