From 5bd0212b54ea8c98fe401e8b1ad6d0b626a4b7e1 Mon Sep 17 00:00:00 2001 From: Samuel Mehrbrodt Date: Fri, 26 Oct 2018 14:46:47 +0200 Subject: unopkg: Log deployment output with the same logger as unopkg This prevents overwriting the existing logfile by using the same logger as unopkg does. Change-Id: Iaad4c5b99a4f428d3a4ad8a046c88404aecb5652 Reviewed-on: https://gerrit.libreoffice.org/62393 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt --- desktop/source/deployment/dp_log.cxx | 86 +++++------------------------------- 1 file changed, 11 insertions(+), 75 deletions(-) (limited to 'desktop') diff --git a/desktop/source/deployment/dp_log.cxx b/desktop/source/deployment/dp_log.cxx index 4728b3c772fa..dd93e3bc1bdd 100644 --- a/desktop/source/deployment/dp_log.cxx +++ b/desktop/source/deployment/dp_log.cxx @@ -28,7 +28,9 @@ #include #include #include +#include #include +#include #include #include #include @@ -38,6 +40,7 @@ using namespace ::com::sun::star; using namespace ::com::sun::star::uno; +using namespace ::com::sun::star::logging; namespace dp_log { @@ -47,8 +50,7 @@ typedef ::cppu::WeakComponentImplHelper t_log_helper; class ProgressLogImpl : public ::dp_misc::MutexHolder, public t_log_helper { Reference m_xLogFile; - sal_Int32 m_log_level; - void log_write( OString const & text ); + std::unique_ptr m_logger; protected: virtual void SAL_CALL disposing() override; @@ -72,73 +74,16 @@ ProgressLogImpl::~ProgressLogImpl() void ProgressLogImpl::disposing() { - try { - if (m_xLogFile.is()) { - m_xLogFile->closeOutput(); - m_xLogFile.clear(); - } - } - catch (const Exception & exc) { - SAL_WARN( "desktop", exc ); - } } ProgressLogImpl::ProgressLogImpl( - Sequence const & args, + Sequence const & /* args */, Reference const & xContext ) - : t_log_helper( getMutex() ), - m_log_level( 0 ) -{ - OUString log_file; - boost::optional< Reference > interactionHandler; - comphelper::unwrapArgs( args, log_file, interactionHandler ); - - Reference xSimpleFileAccess( ucb::SimpleFileAccess::create(xContext) ); - // optional ia handler: - if (interactionHandler) - xSimpleFileAccess->setInteractionHandler( *interactionHandler ); - - m_xLogFile.set( - xSimpleFileAccess->openFileWrite( log_file ), UNO_QUERY_THROW ); - Reference xSeekable( m_xLogFile, UNO_QUERY_THROW ); - xSeekable->seek( xSeekable->getLength() ); - - // write log stamp - OStringBuffer buf; - buf.append( "###### Progress log entry " ); - TimeValue aStartTime, tLocal; - oslDateTime date_time; - if (osl_getSystemTime( &aStartTime ) && - osl_getLocalTimeFromSystemTime( &aStartTime, &tLocal ) && - osl_getDateTimeFromTimeValue( &tLocal, &date_time )) - { - char ar[ 128 ]; - snprintf( - ar, sizeof (ar), - "%04d-%02d-%02d %02d:%02d:%02d ", - date_time.Year, date_time.Month, date_time.Day, - date_time.Hours, date_time.Minutes, date_time.Seconds ); - buf.append( ar ); - } - buf.append( "######\n" ); - log_write( buf.makeStringAndClear() ); -} - - -void ProgressLogImpl::log_write( OString const & text ) + : t_log_helper( getMutex() ) { - try { - if (m_xLogFile.is()) { - m_xLogFile->writeBytes( - Sequence< sal_Int8 >( - reinterpret_cast< sal_Int8 const * >(text.getStr()), - text.getLength() ) ); - } - } - catch (const io::IOException & exc) { - SAL_WARN( "desktop", exc ); - } + // Use the logger created by unopkg app + m_logger.reset(new comphelper::EventLogger(xContext, "unopkg")); } // XProgressHandler @@ -146,39 +91,30 @@ void ProgressLogImpl::log_write( OString const & text ) void ProgressLogImpl::push( Any const & Status ) { update( Status ); - OSL_ASSERT( m_log_level >= 0 ); - ++m_log_level; } - void ProgressLogImpl::update( Any const & Status ) { if (! Status.hasValue()) return; OUStringBuffer buf; - OSL_ASSERT( m_log_level >= 0 ); - for ( sal_Int32 n = 0; n < m_log_level; ++n ) - buf.append( ' ' ); OUString msg; + sal_Int32 logLevel = LogLevel::INFO; if (Status >>= msg) { buf.append( msg ); } else { - buf.append( "ERROR: " ); + logLevel = LogLevel::SEVERE; buf.append( ::comphelper::anyToString(Status) ); } - buf.append( "\n" ); - log_write( OUStringToOString( - buf.makeStringAndClear(), osl_getThreadTextEncoding() ) ); + m_logger->log(logLevel, buf.makeStringAndClear()); } void ProgressLogImpl::pop() { - OSL_ASSERT( m_log_level > 0 ); - --m_log_level; } namespace sdecl = comphelper::service_decl; -- cgit