summaryrefslogtreecommitdiff
path: root/examples/Log_Msg/test_log_msg.cpp
blob: 6216aa38c364a8db2b9760a858fba1e0226f32c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
// Test the Log_Msg abstraction.
// $Id$

#include "ace/OS.h"

static void
cleanup (void)
{
  ACE_DEBUG ((LM_INFO, "leaving (%P)!\n"));
}

static void
cause_error (void)
{
  errno = EWOULDBLOCK;
  ACE_ERROR ((LM_DEBUG, "would block\n"));
}

int
main (int argc, char *argv[])
{
  // Note that the default behavior is to log to STDERR...

  if (argc > 1)
    {
      if (ACE_LOG_MSG->open (argv[0], ACE_Log_Msg::OSTREAM) == -1)
	ACE_ERROR ((LM_ERROR, "cannot open logger!!!\n"));

      cause_error ();
      // Check to see what happened.
      if (ACE_LOG_MSG->op_status () == -1 
	  && ACE_LOG_MSG->errnum () == EWOULDBLOCK)
	ACE_DEBUG ((LM_DEBUG, "op_status and errnum work!\n"));
      else
	ACE_ERROR ((LM_ERROR, "op_status and errnum failed!\n"));
    }
  else
    {
      if (ACE_LOG_MSG->open (argv[0]) == -1)
	ACE_ERROR ((LM_ERROR, "cannot open logger!!!\n"));

      cause_error ();

      // Check to see what happened.
      if (ACE_LOG_MSG->op_status () == -1 
	  && ACE_LOG_MSG->errnum () == EWOULDBLOCK)
	ACE_DEBUG ((LM_DEBUG, "op_status and errnum work!\n"));
      else
	ACE_ERROR ((LM_ERROR, "op_status and errnum failed!\n"));

      // Exercise many different combinations of STDERR and OSTREAM.

      ACE_DEBUG ((LM_INFO, "%f, %*s%s = %d\n", 
		  3.1416, 8, "", "hello", 10000));

      ACE_LOG_MSG->set_flags (ACE_Log_Msg::OSTREAM);
      ACE_LOG_MSG->msg_ostream (&cout);

      ACE_DEBUG ((LM_INFO, "%f, %*s%s = %d\n", 
		  3.1416 * 3.1416, 8, "", "world", 20000));

      ACE_LOG_MSG->clr_flags (ACE_Log_Msg::STDERR);

      ACE_DEBUG ((LM_INFO, "%f, %*s%s = %d\n", 
		  3.1416 * 3.1416, 8, "", "world", 20000));

      ACE_LOG_MSG->msg_ostream (0);

      ACE_LOG_MSG->set_flags (ACE_Log_Msg::STDERR);

      ACE_DEBUG ((LM_INFO, "%f, %*s%s = %d\n", 
		  3.1416 * 3.1416, 8, "", "world", 20000));

      ACE_LOG_MSG->clr_flags (ACE_Log_Msg::OSTREAM);
      ACE_LOG_MSG->msg_ostream (&cerr);

      ACE_DEBUG ((LM_INFO, "%f, %*s%s = %d\n", 
		  3.1416 * 3.1416, 8, "", "world", 20000));

      static int array[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048};

      // Print out the binary bytes of the array in hex form.
      ACE_LOG_MSG->log_hexdump (LM_DEBUG, (char *) array, sizeof array);

      // Disable the LM_DEBUG and LM_INFO messages.
      int priority_mask = ACE_LOG_MSG->priority_mask ();
      ACE_CLR_BITS (priority_mask, LM_DEBUG | LM_INFO);
      ACE_LOG_MSG->priority_mask (priority_mask);

      ACE_DEBUG ((LM_INFO, "This LM_INFO message should not print!\n"));
      ACE_DEBUG ((LM_DEBUG, "This LM_DEBUG message should not print!\n"));

      char *badname = "badname";

      char *l_argv[2];
      l_argv[0] = badname;
      l_argv[1] = 0;

      if (ACE_OS::execv (badname, l_argv) == -1)
	ACE_ERROR ((LM_ERROR, "%n: (%x), %p%r%a\n", 
		    10000, badname, cleanup, 1));
    }
  return 0;
}