static int
test_format_specs (void)
{
#if 0
  Log_Spec_Verify  verifier;
  ACE_Log_Msg      logger;

  if (logger.open (ACE_TEXT ("Log_Msg_Test"), ACE_Log_Msg::MSG_CALLBACK) != 0)
    ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("%p\n"),
                       ACE_TEXT ("%T: test_format_specs open")),
                      1);
  logger.msg_callback (&verifier);

  logger.linenum (42);
  logger.file (ACE_TEXT ("Log_Msg_Test.cpp"));
  logger.log (LM_DEBUG, ACE_TEXT ("l1:%l"));
  logger.log (LM_DEBUG, ACE_TEXT ("l2:%5l"));
  logger.log (LM_DEBUG, ACE_TEXT ("l3N1:%0*l,%.7N"), 4);
  return verifier.result ();
#else
  ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("l1:%l\n")));
  ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("l2:%5l\n")));
  ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("l3N1:%0*l,%.7N\n"), 4));
  ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%*ISTART INDENTING %{\n"), 4));
  ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%IONE%{\n")));
  ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%ITWO%{\n")));
  ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%ITHREE\n")));
  ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%}%ITWO\n")));
  ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%}%IONE\n")));
  ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%}%IENDINDENTING\n")));
  errno = ENOENT;
  ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%m %p\n"), ACE_TEXT("perror")));
  return 0;
#endif
}
예제 #2
0
파일: Assert.cpp 프로젝트: DOCGroup/ACE_TAO
ACE_BEGIN_VERSIONED_NAMESPACE_DECL

// The following ASSERT macro is courtesy of Alexandre Karev
// <*****@*****.**>.
void
__ace_assert(const char *file, int line, const ACE_TCHAR *expression)
{
  int error = ACE_Log_Msg::last_error_adapter ();
  ACE_Log_Msg *log = ACE_Log_Msg::instance ();

  log->set (file, line, -1, error, log->restart (),
            log->msg_ostream (), log->msg_callback ());

#ifdef ACE_LACKS_VA_FUNCTIONS
#define LOG_ARGS
#else
#define LOG_ARGS(X) X
#endif
  log->log LOG_ARGS ((LM_ERROR, ACE_TEXT ("ACE_ASSERT: file %N, line %l assertion failed for '%s'.%a\n"), expression, -1));
}
예제 #3
0
파일: Trace.cpp 프로젝트: DOCGroup/ACE_TAO
ACE_Trace::ACE_Trace (const ACE_TCHAR *n,
                      int line,
                      const ACE_TCHAR *file)
{
#if defined (ACE_NLOGGING)
  ACE_UNUSED_ARG (line);
  ACE_UNUSED_ARG (file);
#endif /* ACE_NLOGGING */

  this->name_ = n;

  // If ACE has not yet been initialized, don't try to trace... there's
  // too much stuff not yet initialized.
  if (ACE_Trace::enable_tracing_ && !ACE_OS_Object_Manager::starting_up ())
    {
      ACE_Log_Msg *lm = ACE_LOG_MSG;
      if (lm->tracing_enabled ()
          && lm->trace_active () == 0)
        {
          lm->trace_active (1);
          ACELIB_DEBUG ((LM_TRACE,
                      ACE_TEXT ("%*s(%t) calling %s in file `%s' on line %d\n"),
                      ACE_Trace::nesting_indent_ * lm->inc (),
                      ACE_TEXT (""),
                      this->name_,
                      file,
                      line));
          lm->trace_active (0);
        }
    }
}
예제 #4
0
ACE_Trace::ACE_Trace (const ACE_TCHAR *n,
                      int line,
                      const ACE_TCHAR *file)
{
#if defined (ACE_NLOGGING)
  ACE_UNUSED_ARG (line);
  ACE_UNUSED_ARG (file);
#endif /* ACE_NLOGGING */

  this->name_ = n;

  if (ACE_Trace::enable_tracing_)
    {
      ACE_Log_Msg *lm = ACE_LOG_MSG;
      if (lm->tracing_enabled ()
          && lm->trace_active () == 0)
        {
          lm->trace_active (1);
          ACE_DEBUG ((LM_TRACE,
                      ACE_LIB_TEXT ("%*s(%t) calling %s in file `%s' on line %d\n"),
                      ACE_Trace::nesting_indent_ * lm->inc (),
                      ACE_LIB_TEXT (""),
                      this->name_,
                      file,
                      line));
          lm->trace_active (0);
        }
    }
}
예제 #5
0
ACE_Trace::~ACE_Trace (void)
{
  if (ACE_Trace::enable_tracing_)
    {
      ACE_Log_Msg *lm = ACE_LOG_MSG;
      if (lm->tracing_enabled ()
          && lm->trace_active () == 0)
        {
          lm->trace_active (1);
          ACE_DEBUG ((LM_TRACE,
                      ACE_LIB_TEXT ("%*s(%t) leaving %s\n"),
                      ACE_Trace::nesting_indent_ * lm->dec (),
                      ACE_LIB_TEXT (""),
                      this->name_));
          lm->trace_active (0);
        }
    }
}
예제 #6
0
파일: Trace.cpp 프로젝트: DOCGroup/ACE_TAO
ACE_Trace::~ACE_Trace (void)
{
  // If ACE has not yet been initialized, don't try to trace... there's
  // too much stuff not yet initialized.
  if (ACE_Trace::enable_tracing_ && !ACE_OS_Object_Manager::starting_up ())
    {
      ACE_Log_Msg *lm = ACE_LOG_MSG;
      if (lm->tracing_enabled ()
          && lm->trace_active () == 0)
        {
          lm->trace_active (1);
          ACELIB_DEBUG ((LM_TRACE,
                      ACE_TEXT ("%*s(%t) leaving %s\n"),
                      ACE_Trace::nesting_indent_ * lm->dec (),
                      ACE_TEXT (""),
                      this->name_));
          lm->trace_active (0);
        }
    }
}
예제 #7
0
  /**
   * Adds the log cathegory clear names corresponding to the cathegory
   * integer constants to the ACE_Log_Record.
   *
   * Parses the argument vector for the Miro command line option:
   * -MiroLogLevel, -MiroLogFilter and -MiroLogDevice.
   *
   * @TODO -MiroLogDevice has no effect. - Needs to be implemented.
   */
  void
  Log::init(int& argc, char * argv[]) 
  {
#if (GCC_MAJOR_VERSION >= 3)
    std::set_terminate (__gnu_cxx::__verbose_terminate_handler);
#endif

    mask_ = 0;
   // register all logging cathegories at the log record
    for (unsigned int i = 0; i < NUM_CATHEGORIES; ++i) {
      ACE_Log_Record::priority_name((ACE_Log_Priority)cathegories[i].priority, 
				    cathegories[i].name);
    }

    // parse command line arguments
    ACE_Arg_Shifter arg_shifter (argc, argv);
    while (arg_shifter.is_anything_left ()) {
      const ACE_TCHAR *currentArg = arg_shifter.get_current ();

      if (ACE_OS::strcasecmp(MIRO_LOG_LEVEL, currentArg) == 0 ||
	  ACE_OS::strcasecmp(MIRO_LOG_LEVEL_SHORT, currentArg) == 0 ) {
	arg_shifter.consume_arg();
	if (arg_shifter.is_parameter_next()) {
	  level_ = strtol(arg_shifter.get_current (), (char**)NULL, 10);
	  if (level_ == 0 && errno == ERANGE)
	    throw Miro::CException(errno, "Error parsing -MiroLogLevel");
	  arg_shifter.consume_arg();
	}
      }
      else if (ACE_OS::strcasecmp(MIRO_LOG_FILTER, currentArg) == 0 ||
	       ACE_OS::strcasecmp(MIRO_LOG_FILTER_SHORT, currentArg) == 0 ) {
	arg_shifter.consume_arg();

	while (arg_shifter.is_parameter_next()) {
	  unsigned int i;
	  for (i = 0; i < NUM_CATHEGORIES; ++i) {
	    if (ACE_OS::strcasecmp(cathegories[i].name, arg_shifter.get_current ()) == 0) {
	      unsigned long p;
	      ACE_Log_Msg *l = ACE_Log_Msg::instance ();
	      p = l->priority_mask(ACE_Log_Msg::PROCESS);
	      p |= cathegories[i].priority;
	      l->priority_mask(p, ACE_Log_Msg::PROCESS);

	      break;
	    }
	  }
	  if (i == NUM_CATHEGORIES)
	    throw Miro::Exception(std::string("Unknown parameter for -MiroLogFilter: ") + 
				  arg_shifter.get_current ());

	  arg_shifter.consume_arg();
	}
      }
      else if (ACE_OS::strcasecmp(MIRO_LOG_DEVICE, currentArg) == 0) {
	arg_shifter.consume_arg();

	if (arg_shifter.is_parameter_next()) {
	  logDevice = arg_shifter.get_current ();
	}
      }
      else {
	arg_shifter.ignore_arg ();
      }
    }

    mask_ = ACE_Log_Msg::instance()->priority_mask(ACE_Log_Msg::PROCESS);
  
//     for (unsigned int i = 0; i < 32; ++i) {
//       unsigned long p = 1UL << i;
//       if (mask_ & p) {
// 	std::cout << "logged cathegory: " 
// 		  << ACE_Log_Record::priority_name((ACE_Log_Priority) p) 
// 		  << std::endl;
//       }
//    }
  }
예제 #8
0
//
// init
//
int ACE_TMAIN (int argc, ACE_TCHAR * argv [])
{
  try
  {
    OASIS::Standard_EINode einode;

    // Initialize the EINode.
    if (0 != einode.init (argc, argv))
      ACE_ERROR_RETURN ((LM_ERROR,
                         ACE_TEXT ("%T (%t) - %M - failed to initialize einode\n")),
                         1);

    // Load the configuration.
    if (0 != einode.load_configuration ("ace_logger.einode"))
      ACE_ERROR_RETURN ((LM_ERROR,
                         ACE_TEXT ("%T (%t) - %M - failed to initialize einode\n")),
                         1);

    // Install the software probe.
    OASIS::ACE_Logging_Software_Probe ace_logger;
    ace_logger.init ("name=");

    einode.register_probe (&ace_logger);

    // Set the message callback for the logging framework. In this
    // case, its the software probe.
    ACE_Log_Msg * alm = ACE_Log_Msg::instance ();
    alm->set_flags (ACE_Log_Msg::MSG_CALLBACK);
    alm->clr_flags (ACE_Log_Msg::STDERR);

    alm->msg_callback (&ace_logger);

    // Activate the EINode
    if (0 != einode.activate ())
      ACE_ERROR_RETURN ((LM_ERROR,
                         ACE_TEXT ("%T (%t) - %M - failed to activate EINode\n")),
                         1);

    // Send messages via ACE_Log_Msg.
    ACE_LOG_MSG->log (LM_INFO, "This is message 1");
    ACE_LOG_MSG->log (LM_INFO, "This is message 2");
    ACE_LOG_MSG->log (LM_INFO, "This is message 3");

    if (0 != einode.deactivate ())
      ACE_ERROR_RETURN ((LM_ERROR,
                         ACE_TEXT ("%T (%t) - %M - failed to deactivate EINode\n")),
                         1);

    // Finally, destroy the EINode.
    einode.destroy ();

    return 0;
  }
  catch (const std::exception & ex)
  {
    ACE_ERROR ((LM_ERROR,
                ACE_TEXT ("%T (%t) - %M - %s\n"),
                ex.what ()));
  }

  return 1;
}