Commit 2cd612601a8828b9d08feade833aaa23a4c0e02e
1 parent
00cc966a
Exists in
master
and in
5 other branches
Incluindo suporte à gravação de log via syslog na extensão oxt
Showing
4 changed files
with
46 additions
and
0 deletions
Show diff stats
src/oxt/globals.hpp
... | ... | @@ -70,6 +70,8 @@ |
70 | 70 | |
71 | 71 | void sleep(int seconds = 1); |
72 | 72 | |
73 | + void log(const char *fmt, const char *msg); | |
74 | + | |
73 | 75 | rtl_TextEncoding get_encoding(); |
74 | 76 | |
75 | 77 | }; |
... | ... | @@ -145,6 +147,7 @@ |
145 | 147 | virtual ::sal_Int16 SAL_CALL sleep( ::sal_Int16 seconds ) throw (::com::sun::star::uno::RuntimeException); |
146 | 148 | virtual ::rtl::OUString SAL_CALL getTextAt( ::sal_Int16 row, ::sal_Int16 col, ::sal_Int16 size ) throw (::com::sun::star::uno::RuntimeException); |
147 | 149 | virtual ::sal_Int16 SAL_CALL setTextAt( ::sal_Int16 row, ::sal_Int16 col, const ::rtl::OUString& text ) throw (::com::sun::star::uno::RuntimeException); |
150 | + virtual ::sal_Int16 SAL_CALL log(const ::rtl::OUString& text ) throw (::com::sun::star::uno::RuntimeException); | |
148 | 151 | virtual ::sal_Int16 SAL_CALL enter( ) throw (::com::sun::star::uno::RuntimeException); |
149 | 152 | virtual ::sal_Int16 SAL_CALL pfkey( ::sal_Int16 keycode ) throw (::com::sun::star::uno::RuntimeException); |
150 | 153 | virtual ::sal_Int16 SAL_CALL pakey( ::sal_Int16 keycode ) throw (::com::sun::star::uno::RuntimeException); | ... | ... |
src/oxt/local.cxx
... | ... | @@ -32,6 +32,11 @@ |
32 | 32 | #include "globals.hpp" |
33 | 33 | #include <errno.h> |
34 | 34 | |
35 | + #ifdef HAVE_SYSLOG | |
36 | + #include <syslog.h> | |
37 | + #include <stdarg.h> | |
38 | + #endif // HAVE_SYSLOG | |
39 | + | |
35 | 40 | /* |
36 | 41 | * NOTE: Take a better look at osl_createEmptySocketAddr() & osl_connectSocketTo() to see if there's |
37 | 42 | * a way to use this calls to connect with the host for better performance. |
... | ... | @@ -42,6 +47,15 @@ |
42 | 47 | |
43 | 48 | /*---[ Implement ]-----------------------------------------------------------------------------------------*/ |
44 | 49 | |
50 | +static void loghandler(H3270 *session, const char *module, int rc, const char *fmt, va_list args) | |
51 | +{ | |
52 | +#ifdef HAVE_SYSLOG | |
53 | + openlog(PACKAGE_NAME, LOG_NDELAY, LOG_USER); | |
54 | + vsyslog(LOG_INFO,fmt,args); | |
55 | + closelog(); | |
56 | +#endif // HAVE_SYSLOG | |
57 | +} | |
58 | + | |
45 | 59 | pw3270::lib3270_session::lib3270_session() |
46 | 60 | { |
47 | 61 | struct _call |
... | ... | @@ -64,6 +78,7 @@ |
64 | 78 | }; |
65 | 79 | |
66 | 80 | H3270 * (*lib3270_new)(const char *); |
81 | + void (*set_log_handler)(void (*loghandler)(H3270 *, const char *, int, const char *, va_list)); | |
67 | 82 | |
68 | 83 | hThread = NULL; |
69 | 84 | hSession = NULL; |
... | ... | @@ -77,9 +92,15 @@ |
77 | 92 | *call[f].entry = (void *) osl_getAsciiFunctionSymbol(hModule,call[f].name); |
78 | 93 | |
79 | 94 | /* Get lib3270 session handle */ |
95 | + set_log_handler = (void (*)(void (*loghandler)(H3270 *, const char *, int, const char *, va_list))) osl_getAsciiFunctionSymbol(hModule,"lib3270_set_log_handler"); | |
96 | + | |
97 | + if(set_log_handler) | |
98 | + set_log_handler(loghandler); | |
99 | + | |
80 | 100 | lib3270_new = (H3270 * (*)(const char *)) osl_getAsciiFunctionSymbol(hModule,"lib3270_session_new"); |
81 | 101 | hSession = lib3270_new(""); |
82 | 102 | |
103 | + log("%s UNO extension loaded",PACKAGE_NAME); | |
83 | 104 | } |
84 | 105 | |
85 | 106 | pw3270::lib3270_session::~lib3270_session() |
... | ... | @@ -105,6 +126,7 @@ |
105 | 126 | hModule = NULL; |
106 | 127 | } |
107 | 128 | |
129 | + log("%s UNO extension unloaded",PACKAGE_NAME); | |
108 | 130 | } |
109 | 131 | |
110 | 132 | int pw3270::lib3270_session::get_revision(void) | ... | ... |
src/oxt/main.cxx
... | ... | @@ -31,6 +31,10 @@ |
31 | 31 | |
32 | 32 | #include "globals.hpp" |
33 | 33 | |
34 | +#ifdef HAVE_SYSLOG | |
35 | + #include <syslog.h> | |
36 | +#endif // HAVE_SYSLOG | |
37 | + | |
34 | 38 | #include <salhelper/timer.hxx> |
35 | 39 | #include <com/sun/star/registry/XRegistryKey.hpp> |
36 | 40 | #include <com/sun/star/lang/XSingleComponentFactory.hpp> |
... | ... | @@ -229,6 +233,12 @@ pw3270::uno_impl::~uno_impl() |
229 | 233 | return 0; |
230 | 234 | } |
231 | 235 | |
236 | +::sal_Int16 SAL_CALL pw3270::uno_impl::log( const ::rtl::OUString& msg ) throw (::com::sun::star::uno::RuntimeException) | |
237 | +{ | |
238 | + hSession->log("%s",rtl::OUStringToOString(msg,RTL_TEXTENCODING_UTF8).getStr()); | |
239 | + return 0; | |
240 | +} | |
241 | + | |
232 | 242 | |
233 | 243 | pw3270::session::session() |
234 | 244 | { |
... | ... | @@ -251,4 +261,14 @@ void pw3270::session::sleep(int seconds) |
251 | 261 | osl_waitThread(&t); |
252 | 262 | } |
253 | 263 | |
264 | +void pw3270::session::log(const char *fmt, const char *msg) | |
265 | +{ | |
266 | +#ifdef HAVE_SYSLOG | |
267 | + openlog(PACKAGE_NAME, LOG_NDELAY, LOG_USER); | |
268 | + syslog(LOG_INFO,fmt,msg); | |
269 | + closelog(); | |
270 | +#else | |
271 | + #error This module needs syslog support | |
272 | +#endif // HAVE_SYSLOG | |
273 | +} | |
254 | 274 | ... | ... |
src/oxt/pw3270.idl