VirtualBox

Changeset 41040 in vbox for trunk/src/VBox/Main/webservice


Ignore:
Timestamp:
Apr 24, 2012 10:13:40 AM (13 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
77602
Message:

Main+Frontends: move release logging setup to the glue code (to eliminate spreading code duplication), various minor fixes and cleanups

Location:
trunk/src/VBox/Main/webservice
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/webservice/Makefile.kmk

    r40526 r41040  
    77
    88#
    9 # Copyright (C) 2006-2012 Oracle Corporation
     9# Copyright (C) 2007-2012 Oracle Corporation
    1010#
    1111# This file is part of VirtualBox Open Source Edition (OSE), as
     
    318318
    319319 vboxweb.cpp_DEFS = \
    320         VBOX_BUILD_TARGET=\"$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)\" \
    321320        $(if $(VBOX_BLEEDING_EDGE),VBOX_BLEEDING_EDGE=\"$(VBOX_BLEEDING_EDGE)\",)
    322321
  • trunk/src/VBox/Main/webservice/vboxweb.cpp

    r40312 r41040  
    66 *      server, to which clients can connect.
    77 *
    8  * Copyright (C) 2006-2012 Oracle Corporation
     8 * Copyright (C) 2007-2012 Oracle Corporation
    99 *
    1010 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    3131#include <VBox/version.h>
    3232#include <VBox/log.h>
    33 
    34 #include <package-generated.h>
    3533
    3634#include <iprt/buildconfig.h>
     
    721719}
    722720
    723 static void WebLogHeaderFooter(PRTLOGGER pLoggerRelease, RTLOGPHASE enmPhase, PFNRTLOGPHASEMSG pfnLog)
    724 {
    725     /* some introductory information */
    726     static RTTIMESPEC s_TimeSpec;
    727     char szTmp[256];
    728     if (enmPhase == RTLOGPHASE_BEGIN)
    729         RTTimeNow(&s_TimeSpec);
    730     RTTimeSpecToString(&s_TimeSpec, szTmp, sizeof(szTmp));
    731 
    732     switch (enmPhase)
    733     {
    734         case RTLOGPHASE_BEGIN:
    735         {
    736             pfnLog(pLoggerRelease,
    737                    "VirtualBox web service %s r%u %s (%s %s) release log\n"
    738 #ifdef VBOX_BLEEDING_EDGE
    739                    "EXPERIMENTAL build " VBOX_BLEEDING_EDGE "\n"
    740 #endif
    741                    "Log opened %s\n",
    742                    VBOX_VERSION_STRING, RTBldCfgRevision(), VBOX_BUILD_TARGET,
    743                    __DATE__, __TIME__, szTmp);
    744 
    745             int vrc = RTSystemQueryOSInfo(RTSYSOSINFO_PRODUCT, szTmp, sizeof(szTmp));
    746             if (RT_SUCCESS(vrc) || vrc == VERR_BUFFER_OVERFLOW)
    747                 pfnLog(pLoggerRelease, "OS Product: %s\n", szTmp);
    748             vrc = RTSystemQueryOSInfo(RTSYSOSINFO_RELEASE, szTmp, sizeof(szTmp));
    749             if (RT_SUCCESS(vrc) || vrc == VERR_BUFFER_OVERFLOW)
    750                 pfnLog(pLoggerRelease, "OS Release: %s\n", szTmp);
    751             vrc = RTSystemQueryOSInfo(RTSYSOSINFO_VERSION, szTmp, sizeof(szTmp));
    752             if (RT_SUCCESS(vrc) || vrc == VERR_BUFFER_OVERFLOW)
    753                 pfnLog(pLoggerRelease, "OS Version: %s\n", szTmp);
    754             if (RT_SUCCESS(vrc) || vrc == VERR_BUFFER_OVERFLOW)
    755                 pfnLog(pLoggerRelease, "OS Service Pack: %s\n", szTmp);
    756 
    757             /* the package type is interesting for Linux distributions */
    758             char szExecName[RTPATH_MAX];
    759             char *pszExecName = RTProcGetExecutablePath(szExecName, sizeof(szExecName));
    760             pfnLog(pLoggerRelease,
    761                    "Executable: %s\n"
    762                    "Process ID: %u\n"
    763                    "Package type: %s"
    764 #ifdef VBOX_OSE
    765                    " (OSE)"
    766 #endif
    767                    "\n",
    768                    pszExecName ? pszExecName : "unknown",
    769                    RTProcSelf(),
    770                    VBOX_PACKAGE_STRING);
    771             break;
    772         }
    773 
    774         case RTLOGPHASE_PREROTATE:
    775             pfnLog(pLoggerRelease, "Log rotated - Log started %s\n", szTmp);
    776             break;
    777 
    778         case RTLOGPHASE_POSTROTATE:
    779             pfnLog(pLoggerRelease, "Log continuation - Log started %s\n", szTmp);
    780             break;
    781 
    782         case RTLOGPHASE_END:
    783             pfnLog(pLoggerRelease, "End of log file - Log started %s\n", szTmp);
    784             break;
    785 
    786         default:
    787             /* nothing */;
    788     }
    789 }
    790 
    791721#ifdef WITH_OPENSSL
    792722/****************************************************************************
     
    1020950    g_mapThreads[RTThreadSelf()] = "[M  ]";
    1021951
    1022     RTStrmPrintf(g_pStdErr, VBOX_PRODUCT " web service version " VBOX_VERSION_STRING "\n"
    1023                             "(C) 2005-" VBOX_C_YEAR " " VBOX_VENDOR "\n"
     952    RTStrmPrintf(g_pStdErr, VBOX_PRODUCT " web service Version " VBOX_VERSION_STRING "\n"
     953                            "(C) 2007-" VBOX_C_YEAR " " VBOX_VENDOR "\n"
    1024954                            "All rights reserved.\n");
    1025955
     
    11631093    }
    11641094
    1165     /* create release logger */
    1166     PRTLOGGER pLoggerRelease;
    1167     static const char * const s_apszGroups[] = VBOX_LOGGROUP_NAMES;
    1168     RTUINT fFlags = RTLOGFLAGS_PREFIX_THREAD | RTLOGFLAGS_PREFIX_TIME_PROG;
    1169 #if defined(RT_OS_WINDOWS) || defined(RT_OS_OS2)
    1170     fFlags |= RTLOGFLAGS_USECRLF;
    1171 #endif
    1172     char szError[RTPATH_MAX + 128] = "";
    1173     int vrc = RTLogCreateEx(&pLoggerRelease, fFlags, "all",
    1174                             "VBOXWEBSRV_RELEASE_LOG", RT_ELEMENTS(s_apszGroups), s_apszGroups, RTLOGDEST_STDOUT,
    1175                             WebLogHeaderFooter, g_cHistory, g_uHistoryFileSize, g_uHistoryFileTime,
    1176                             szError, sizeof(szError), pszLogFile);
    1177     if (RT_SUCCESS(vrc))
    1178     {
    1179         /* register this logger as the release logger */
    1180         RTLogRelSetDefaultInstance(pLoggerRelease);
    1181 
    1182         /* Explicitly flush the log in case of VBOXWEBSRV_RELEASE_LOG=buffered. */
    1183         RTLogFlush(pLoggerRelease);
    1184     }
    1185     else
    1186         return RTMsgErrorExit(RTEXITCODE_FAILURE, "failed to open release log (%s, %Rrc)", szError, vrc);
     1095    /* create release logger, to stdout */
     1096    char szError[RTPATH_MAX + 128];
     1097    rc = com::VBoxLogRelCreate("web service", g_fDaemonize ? NULL : pszLogFile,
     1098                               RTLOGFLAGS_PREFIX_THREAD | RTLOGFLAGS_PREFIX_TIME_PROG,
     1099                               "all", "VBOXWEBSRV_RELEASE_LOG",
     1100                               RTLOGDEST_STDOUT, UINT32_MAX /* cMaxEntriesPerGroup */,
     1101                               g_cHistory, g_uHistoryFileTime, g_uHistoryFileSize,
     1102                               szError, sizeof(szError));
     1103    if (RT_FAILURE(rc))
     1104        return RTMsgErrorExit(RTEXITCODE_FAILURE, "failed to open release log (%s, %Rrc)", szError, rc);
    11871105
    11881106#if defined(RT_OS_DARWIN) || defined(RT_OS_LINUX) || defined (RT_OS_SOLARIS) || defined(RT_OS_FREEBSD)
     
    11921110        char szLogFile[RTPATH_MAX];
    11931111
    1194         rc = com::GetVBoxUserHomeDirectory(szLogFile, sizeof(szLogFile));
    1195         if (RT_FAILURE(rc))
    1196              return RTMsgErrorExit(RTEXITCODE_FAILURE, "could not get base directory for logging: %Rrc", rc);
    1197         rc = RTPathAppend(szLogFile, sizeof(szLogFile), "vboxwebsrv.log");
    1198         if (RT_FAILURE(rc))
    1199              return RTMsgErrorExit(RTEXITCODE_FAILURE, "could not construct logging path: %Rrc", rc);
     1112        if (!pszLogFile || !*pszLogFile)
     1113        {
     1114            rc = com::GetVBoxUserHomeDirectory(szLogFile, sizeof(szLogFile));
     1115            if (RT_FAILURE(rc))
     1116                 return RTMsgErrorExit(RTEXITCODE_FAILURE, "could not get base directory for logging: %Rrc", rc);
     1117            rc = RTPathAppend(szLogFile, sizeof(szLogFile), "vboxwebsrv.log");
     1118            if (RT_FAILURE(rc))
     1119                 return RTMsgErrorExit(RTEXITCODE_FAILURE, "could not construct logging path: %Rrc", rc);
     1120            pszLogFile = szLogFile;
     1121        }
    12001122
    12011123        rc = RTProcDaemonizeUsingFork(false /* fNoChDir */, false /* fNoClose */, pszPidFile);
     
    12031125            return RTMsgErrorExit(RTEXITCODE_FAILURE, "failed to daemonize, rc=%Rrc. exiting.", rc);
    12041126
    1205         /* create release logger */
    1206         PRTLOGGER pLoggerReleaseFile;
    1207         static const char * const s_apszGroupsFile[] = VBOX_LOGGROUP_NAMES;
    1208         RTUINT fFlagsFile = RTLOGFLAGS_PREFIX_THREAD | RTLOGFLAGS_PREFIX_TIME_PROG;
    1209 #if defined(RT_OS_WINDOWS) || defined(RT_OS_OS2)
    1210         fFlagsFile |= RTLOGFLAGS_USECRLF;
    1211 #endif
    1212         char szErrorFile[RTPATH_MAX + 128] = "";
    1213         int vrc = RTLogCreateEx(&pLoggerReleaseFile, fFlagsFile, "all",
    1214                                 "VBOXWEBSRV_RELEASE_LOG", RT_ELEMENTS(s_apszGroupsFile), s_apszGroupsFile, RTLOGDEST_FILE,
    1215                                 WebLogHeaderFooter, g_cHistory, g_uHistoryFileSize, g_uHistoryFileTime,
    1216                                 szErrorFile, sizeof(szErrorFile), szLogFile);
    1217         if (RT_SUCCESS(vrc))
    1218         {
    1219             /* register this logger as the release logger */
    1220             RTLogRelSetDefaultInstance(pLoggerReleaseFile);
    1221 
    1222             /* Explicitly flush the log in case of VBOXWEBSRV_RELEASE_LOG=buffered. */
    1223             RTLogFlush(pLoggerReleaseFile);
    1224         }
    1225         else
    1226             return RTMsgErrorExit(RTEXITCODE_FAILURE, "failed to open release log (%s, %Rrc)", szErrorFile, vrc);
     1127        /* create release logger, to file */
     1128        rc = com::VBoxLogRelCreate("web service", pszLogFile,
     1129                                   RTLOGFLAGS_PREFIX_THREAD | RTLOGFLAGS_PREFIX_TIME_PROG,
     1130                                   "all", "VBOXWEBSRV_RELEASE_LOG",
     1131                                   RTLOGDEST_FILE, UINT32_MAX /* cMaxEntriesPerGroup */,
     1132                                   g_cHistory, g_uHistoryFileTime, g_uHistoryFileSize,
     1133                                   szError, sizeof(szError));
     1134        if (RT_FAILURE(rc))
     1135            return RTMsgErrorExit(RTEXITCODE_FAILURE, "failed to open release log (%s, %Rrc)", szError, rc);
    12271136    }
    12281137#endif
  • trunk/src/VBox/Main/webservice/websrv-cpp.xsl

    r39091 r41040  
    1212        generated for the webservice.
    1313
    14      Copyright (C) 2006-2010 Oracle Corporation
     14     Copyright (C) 2007-2012 Oracle Corporation
    1515
    1616     This file is part of VirtualBox Open Source Edition (OSE), as
     
    6868#include <VBox/com/EventQueue.h>
    6969#include <VBox/VBoxAuth.h>
    70 #include <VBox/version.h>
    7170
    7271#include <iprt/assert.h>
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette