Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-gpu
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-gpu
Commits
f2b775f5
Commit
f2b775f5
authored
Nov 29, 2005
by
Clément Stenac
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add ability to log to syslog (Closes:#334)
parent
f9db392d
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
115 additions
and
52 deletions
+115
-52
configure.ac
configure.ac
+1
-0
modules/misc/logger.c
modules/misc/logger.c
+114
-52
No files found.
configure.ac
View file @
f2b775f5
...
...
@@ -677,6 +677,7 @@ AC_CHECK_HEADERS(arpa/inet.h net/if.h netinet/in.h sys/socket.h)
if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
AC_CHECK_HEADERS(machine/param.h sys/shm.h)
AC_CHECK_HEADERS(linux/version.h)
AC_CHECK_HEADERS(syslog.h)
fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
AC_HEADER_TIME
...
...
modules/misc/logger.c
View file @
f2b775f5
...
...
@@ -39,6 +39,7 @@
#define MODE_TEXT 0
#define MODE_HTML 1
#define MODE_SYSLOG 2
#ifdef SYS_DARWIN
#define LOG_DIR "Library/Logs/"
...
...
@@ -66,6 +67,10 @@
" </body>\n" \
"</html>\n"
#if HAVE_SYSLOG_H
#include <syslog.h>
#endif
/*****************************************************************************
* intf_sys_t: description and status of log interface
*****************************************************************************/
...
...
@@ -87,15 +92,30 @@ static void Run ( intf_thread_t * );
static
void
FlushQueue
(
msg_subscription_t
*
,
FILE
*
,
int
);
static
void
TextPrint
(
const
msg_item_t
*
,
FILE
*
);
static
void
HtmlPrint
(
const
msg_item_t
*
,
FILE
*
);
#ifdef HAVE_SYSLOG_H
static
void
SyslogPrint
(
const
msg_item_t
*
);
#endif
/*****************************************************************************
* Module descriptor
*****************************************************************************/
static
char
*
mode_list
[]
=
{
"text"
,
"html"
};
static
char
*
mode_list_text
[]
=
{
N_
(
"Text"
),
"HTML"
};
static
char
*
mode_list
[]
=
{
"text"
,
"html"
#ifdef HAVE_SYSLOG_H
,
"syslog"
#endif
};
static
char
*
mode_list_text
[]
=
{
N_
(
"Text"
),
"HTML"
#ifdef HAVE_SYSLOG_H
,
"syslog"
#endif
};
#define LOGMODE_TEXT N_("Log format")
#ifdef HAVE_SYSLOG_H
#define LOGMODE_LONGTEXT N_("Specify the log format. Available choices are \"text\" (default), \"html\", and \"syslog\".")
#else
#define LOGMODE_LONGTEXT N_("Specify the log format. Available choices are \"text\" (default) and \"html\".")
#endif
vlc_module_begin
();
set_category
(
CAT_INTERFACE
);
...
...
@@ -116,12 +136,12 @@ vlc_module_end();
* Open: initialize and create stuff
*****************************************************************************/
static
int
Open
(
vlc_object_t
*
p_this
)
{
{
intf_thread_t
*
p_intf
=
(
intf_thread_t
*
)
p_this
;
char
*
psz_mode
,
*
psz_file
;
CONSOLE_INTRO_MSG
;
msg_Info
(
p_intf
,
"Using
the logger interface module
..."
);
msg_Info
(
p_intf
,
"Using
logger
..."
);
/* Allocate instance and initialize some members */
p_intf
->
p_sys
=
(
intf_sys_t
*
)
malloc
(
sizeof
(
intf_sys_t
)
);
...
...
@@ -142,6 +162,12 @@ static int Open( vlc_object_t *p_this )
{
p_intf
->
p_sys
->
i_mode
=
MODE_HTML
;
}
#ifdef HAVE_SYSLOG_H
else
if
(
!
strcmp
(
psz_mode
,
"syslog"
)
)
{
p_intf
->
p_sys
->
i_mode
=
MODE_SYSLOG
;
}
#endif
else
{
msg_Err
(
p_intf
,
"invalid log mode `%s', using `text'"
,
psz_mode
);
...
...
@@ -156,75 +182,87 @@ static int Open( vlc_object_t *p_this )
p_intf
->
p_sys
->
i_mode
=
MODE_TEXT
;
}
psz_file
=
config_GetPsz
(
p_intf
,
"logfile"
);
if
(
!
psz_file
)
if
(
p_intf
->
p_sys
->
i_mode
!=
MODE_SYSLOG
)
{
psz_file
=
config_GetPsz
(
p_intf
,
"logfile"
);
if
(
!
psz_file
)
{
#ifdef SYS_DARWIN
char
*
psz_homedir
=
p_this
->
p_vlc
->
psz_homedir
;
char
*
psz_homedir
=
p_this
->
p_vlc
->
psz_homedir
;
if
(
!
psz_homedir
)
{
msg_Err
(
p_this
,
"psz_homedir is null"
);
return
-
1
;
}
psz_file
=
(
char
*
)
malloc
(
sizeof
(
"/"
LOG_DIR
"/"
LOG_FILE_HTML
)
+
strlen
(
psz_homedir
)
);
if
(
psz_file
)
{
if
(
!
psz_homedir
)
{
msg_Err
(
p_this
,
"psz_homedir is null"
);
return
-
1
;
}
psz_file
=
(
char
*
)
malloc
(
sizeof
(
"/"
LOG_DIR
"/"
LOG_FILE_HTML
)
+
strlen
(
psz_homedir
)
);
if
(
psz_file
)
{
switch
(
p_intf
->
p_sys
->
i_mode
)
{
case
MODE_HTML
:
sprintf
(
psz_file
,
"%s/"
LOG_DIR
"/"
LOG_FILE_HTML
,
psz_homedir
);
break
;
case
MODE_TEXT
:
default:
sprintf
(
psz_file
,
"%s/"
LOG_DIR
"/"
LOG_FILE_TEXT
,
psz_homedir
);
break
;
}
}
#else
switch
(
p_intf
->
p_sys
->
i_mode
)
{
case
MODE_HTML
:
sprintf
(
psz_file
,
"%s/"
LOG_DIR
"/"
LOG_FILE_HTML
,
psz_homedir
);
psz_file
=
strdup
(
LOG_FILE_HTML
);
break
;
case
MODE_TEXT
:
default:
sprintf
(
psz_file
,
"%s/"
LOG_DIR
"/"
LOG_FILE_TEXT
,
psz_homedir
);
psz_file
=
strdup
(
LOG_FILE_TEXT
);
break
;
}
#endif
msg_Warn
(
p_intf
,
"no log filename provided, using `%s'"
,
psz_file
);
}
#else
/* Open the log file and remove any buffering for the stream */
msg_Dbg
(
p_intf
,
"opening logfile `%s'"
,
psz_file
);
p_intf
->
p_sys
->
p_file
=
fopen
(
psz_file
,
"wt"
);
if
(
p_intf
->
p_sys
->
p_file
==
NULL
)
{
msg_Err
(
p_intf
,
"error opening logfile `%s'"
,
psz_file
);
free
(
p_intf
->
p_sys
);
free
(
psz_file
);
return
-
1
;
}
setvbuf
(
p_intf
->
p_sys
->
p_file
,
NULL
,
_IONBF
,
0
);
free
(
psz_file
);
switch
(
p_intf
->
p_sys
->
i_mode
)
{
case
MODE_HTML
:
psz_file
=
strdup
(
LOG_FILE_HTML
);
LOG_STRING
(
HTML_HEADER
,
p_intf
->
p_sys
->
p_file
);
break
;
case
MODE_TEXT
:
default:
psz_file
=
strdup
(
LOG_FILE_TEXT
);
LOG_STRING
(
TEXT_HEADER
,
p_intf
->
p_sys
->
p_file
);
break
;
}
#endif
msg_Warn
(
p_intf
,
"no log filename provided, using `%s'"
,
psz_file
);
}
/* Open the log file and remove any buffering for the stream */
msg_Dbg
(
p_intf
,
"opening logfile `%s'"
,
psz_file
);
p_intf
->
p_sys
->
p_file
=
fopen
(
psz_file
,
"wt"
);
if
(
p_intf
->
p_sys
->
p_file
==
NULL
)
{
msg_Err
(
p_intf
,
"error opening logfile `%s'"
,
psz_file
);
free
(
p_intf
->
p_sys
);
free
(
psz_file
);
return
-
1
;
}
setvbuf
(
p_intf
->
p_sys
->
p_file
,
NULL
,
_IONBF
,
0
);
p_intf
->
p_sys
->
p_sub
=
msg_Subscribe
(
p_intf
);
free
(
psz_file
);
switch
(
p_intf
->
p_sys
->
i_mode
)
else
{
case
MODE_HTML
:
LOG_STRING
(
HTML_HEADER
,
p_intf
->
p_sys
->
p_file
);
break
;
case
MODE_TEXT
:
default:
LOG_STRING
(
TEXT_HEADER
,
p_intf
->
p_sys
->
p_file
);
break
;
p_intf
->
p_sys
->
p_file
=
NULL
;
#ifdef HAVE_SYSLOG_H
openlog
(
"VLC"
,
0
,
LOG_DAEMON
);
#endif
}
p_intf
->
p_sys
->
p_sub
=
msg_Subscribe
(
p_intf
);
p_intf
->
pf_run
=
Run
;
return
0
;
...
...
@@ -234,9 +272,9 @@ static int Open( vlc_object_t *p_this )
* Close: destroy interface stuff
*****************************************************************************/
static
void
Close
(
vlc_object_t
*
p_this
)
{
{
intf_thread_t
*
p_intf
=
(
intf_thread_t
*
)
p_this
;
/* Flush the queue and unsubscribe from the message queue */
FlushQueue
(
p_intf
->
p_sys
->
p_sub
,
p_intf
->
p_sys
->
p_file
,
p_intf
->
p_sys
->
i_mode
);
...
...
@@ -248,13 +286,19 @@ static void Close( vlc_object_t *p_this )
LOG_STRING
(
HTML_FOOTER
,
p_intf
->
p_sys
->
p_file
);
break
;
case
MODE_TEXT
:
#ifdef HAVE_SYSLOG_H
case
MODE_SYSLOG
:
closelog
();
break
;
#endif
default:
LOG_STRING
(
TEXT_FOOTER
,
p_intf
->
p_sys
->
p_file
);
break
;
}
/* Close the log file */
fclose
(
p_intf
->
p_sys
->
p_file
);
if
(
p_intf
->
p_sys
->
i_mode
!=
MODE_SYSLOG
)
fclose
(
p_intf
->
p_sys
->
p_file
);
/* Destroy structure */
free
(
p_intf
->
p_sys
);
...
...
@@ -278,7 +322,7 @@ static void Run( intf_thread_t *p_intf )
}
/*****************************************************************************
* FlushQueue: flush the message queue into the log
file
* FlushQueue: flush the message queue into the log
*****************************************************************************/
static
void
FlushQueue
(
msg_subscription_t
*
p_sub
,
FILE
*
p_file
,
int
i_mode
)
{
...
...
@@ -300,6 +344,11 @@ static void FlushQueue( msg_subscription_t *p_sub, FILE *p_file, int i_mode )
case
MODE_HTML
:
HtmlPrint
(
&
p_sub
->
p_msg
[
i_start
],
p_file
);
break
;
#ifdef HAVE_SYSLOG_H
case
MODE_SYSLOG
:
SyslogPrint
(
&
p_sub
->
p_msg
[
i_start
]
);
break
;
#endif
case
MODE_TEXT
:
default:
TextPrint
(
&
p_sub
->
p_msg
[
i_start
],
p_file
);
...
...
@@ -324,6 +373,19 @@ static void TextPrint( const msg_item_t *p_msg, FILE *p_file )
LOG_STRING
(
"
\n
"
,
p_file
);
}
#ifdef HAVE_SYSLOG_H
static
void
SyslogPrint
(
const
msg_item_t
*
p_msg
)
{
int
i_priority
;
if
(
p_msg
->
i_type
==
0
)
i_priority
=
LOG_INFO
;
if
(
p_msg
->
i_type
==
1
)
i_priority
=
LOG_ERR
;
if
(
p_msg
->
i_type
==
2
)
i_priority
=
LOG_WARNING
;
if
(
p_msg
->
i_type
==
3
)
i_priority
=
LOG_DEBUG
;
syslog
(
i_priority
,
"%s %s"
,
p_msg
->
psz_module
,
p_msg
->
psz_msg
);
}
#endif
static
void
HtmlPrint
(
const
msg_item_t
*
p_msg
,
FILE
*
p_file
)
{
static
const
char
*
ppsz_color
[
4
]
=
{
"<font color=
\"
#ffffff
\"
>"
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment