Exemplo n.º 1
0
static void
os_defaultDiag (
    const char   *cluster,
    os_diagLevel  level,
    const char   *description,
    va_list 	  args)
{
    os_time ostime;
    char extended_description[512];
    char procIdentity[64];
    char threadIdentity[64];
    char node[64];

    ostime = os_timeGet();

    os_vsnprintf (extended_description, sizeof(extended_description)-1, description, args);
    extended_description [sizeof(extended_description)-1] = '\0';

    os_gethostname (node, sizeof(node));
    os_threadFigureIdentity (threadIdentity, sizeof (threadIdentity)-1);
    threadIdentity [sizeof (threadIdentity)-1] = '\0';
    os_procFigureIdentity (procIdentity, sizeof (procIdentity)-1);
    procIdentity [sizeof (procIdentity)-1] = '\0';

    printf (
        "Diag - %s:%s:%s - T:%d.%9.9d L:%s C:%s D:%s\n",
        node,
        procIdentity,
        threadIdentity,
        ostime.tv_sec,
        ostime.tv_nsec,
        os_diagLevelText[level],
        cluster,
        extended_description);
}
Exemplo n.º 2
0
/**
* Get the destination for logging error reports. Env property OSPL_INFOFILE and
* OSPL_LOGPATH controls this value.
* If OSPL_INFOFILE is not set & this process is an OpenSplice service default
* to logging to a file named ospl-info.log, otherwise
* use standard out.
* @see os_report_file_path
*/
char *
os_reportGetInfoFileName()
{
    char* file_name;
    char procIdentity[256];
    static os_boolean doneOnce = OS_FALSE;

    os_reportInit(OS_FALSE);

    file_name = os_report_file_path ("ospl-info.log", (os_char *)os_env_infofile);
    /* @todo dds2881 - Uncomment below & remove above to enable application default error logging to stderr */
    /* file_name = os_report_file_path (os_procIsOpenSpliceService() ? "ospl-info.log" : "<stdout>", os_env_infofile);*/

    os_procFigureIdentity(procIdentity, sizeof (procIdentity)-1);
    procIdentity[sizeof (procIdentity)-1] = '\0';
    if (!doneOnce)
    {
        doneOnce = OS_TRUE;
        if (!doAppend)
        {
            os_remove (file_name);
        }
    }

    return file_name;
}
Exemplo n.º 3
0
void
os_report(
    os_reportType reportType,
    const char   *reportContext,
    const char   *fileName,
    os_int32      lineNo,
    os_int32      reportCode,
    const char   *description,
    ...)
{
    va_list args;
    unsigned int i;
    const char *file_name = fileName;
    const char *ptr;
    char xml_description[1024];
    char extended_description[1024];
    char threadIdentity[64];
    char procIdentity[256];
    struct os_reportEventV1_s eventDetails = { OS_REPORT_EVENT_V1, /* version */
                                               0, /* reportType */
                                               NULL, /* reportContext */
                                               NULL, /* fileName */
                                               0, /* lineNo */
                                               0, /* code */
                                               NULL, /*description */
                                               NULL, /* threadDesc */
                                               NULL /*processDesc */
                                              };

#ifdef WIN32
    char file_separator = '\\';
#else
    char file_separator = '/';
#endif

    eventDetails.description = (char*) &extended_description;
    eventDetails.threadDesc = (char*) &threadIdentity;
    eventDetails.processDesc = (char*) &procIdentity;

    if (reportType < os_reportVerbosity)
    {
        /* This level / type of report is below the process output suppression threshold. */
        return;
    }

    va_start(args, description);
    os_vsnprintf(extended_description, sizeof(extended_description)-1, description, args);
    va_end(args);
    extended_description[sizeof(extended_description)-1] = '\0';
    os_threadFigureIdentity(threadIdentity, sizeof (threadIdentity)-1);
    threadIdentity[sizeof (threadIdentity)-1] = '\0';
    os_procFigureIdentity(procIdentity, sizeof (procIdentity)-1);
    procIdentity[sizeof (procIdentity)-1] = '\0';
    eventDetails.reportType = reportType;
    eventDetails.reportContext = reportContext;
    eventDetails.lineNo = lineNo;
    eventDetails.code = reportCode;

    for (ptr=fileName; *ptr!=0; ptr++) {
       if (*ptr == file_separator) {
          file_name = (char *)((os_address)ptr+1);
       }
    }

    eventDetails.fileName = file_name;

    if (os_reportServicesCount != 0) {
       for (i = 0; i < OS_REPORTSERVICES_MAX; i++) {
          if (os_reportServices[i].os_reportContext != 0) {
             /* Must call va_start and va_end before and after each call to the plugged in services */
             va_start(args, description);
             os_reportServices[i].os_reportService(os_reportServices[i].os_reportContext,
                                                   reportType, reportContext, file_name, lineNo, reportCode,
                                                   description, args);
             va_end(args);
          }
       }
    }

    if (reportPluginAdmin != NULL){
        if (xmlReportPluginsCount > 0)
        {
            /* print format the XML string only if at least one plugin
             * has been registered with an XML Report method */
            os_sprintf (xml_description,
                        "<%s>\n"
                        "<DESCRIPTION>%s</DESCRIPTION>\n"
                        "<CONTEXT>%s</CONTEXT>\n"
                        "<FILE>%s</FILE>\n"
                        "<LINE>%d</LINE>\n"
                        "<CODE>%d</CODE>\n"
                        "</%s>\n",
                        os_reportTypeText[reportType],
                        extended_description,
                        reportContext,
                        file_name,
                        lineNo,
                        reportCode,
                        os_reportTypeText[reportType]);
            xml_description[sizeof(xml_description)-1] = '\0';
        }
        for (i = 0; i < reportPluginAdmin->size; i++){
            if (reportPluginAdmin->reportArray[i] != NULL) {
                if (reportPluginAdmin->reportArray[i]->report_symbol != NULL) {
                    reportPluginAdmin->reportArray[i]->report_symbol
                    (reportPluginAdmin->reportArray[i]->plugin_context, xml_description);
                }

                if (reportPluginAdmin->reportArray[i]->typedreport_symbol != NULL) {
                    reportPluginAdmin->reportArray[i]->typedreport_symbol
                    (reportPluginAdmin->reportArray[i]->plugin_context, (os_reportEvent) &eventDetails);
                }
            }
        }
    }

    if (doDefault)
    {
       os_defaultReport(&eventDetails);
    }

    va_start(args, description);
    if (reportType == OS_API_INFO) {
       char sourceLine[512];

       snprintf(sourceLine, sizeof(sourceLine), "%s::%d", file_name, lineNo);
       sourceLine[sizeof(sourceLine)-1] = '\0';
       os_reportSetApiInfoRec(reportContext, sourceLine, NULL, reportCode,
                              description, args);
    }
    va_end(args);
 }