You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

219 lines
8.3 KiB

  1. pantheios - README
  2. ==================
  3. Updated: 7th August 2012
  4. See the introduction in the accompanying doc/html/1.0.1-beta214/index.html
  5. file.
  6. Please feel free to request, nay demand, improvements in any areas
  7. that you feel are deficient. We believe that Pantheios is the best
  8. diagnostic logging API ever created, but we are not so deluded as to think
  9. that our presentational skills are as good. Criticism will be gratefully
  10. received.
  11. If you are interested in commercial services and/or training for
  12. Pantheios, contact Synesis Software, via http://synesis.com.au/contact.html
  13. Information about Pantheios training is available at
  14. http://synesis.com.au/training.html
  15. 10 important things to know about Pantheios:
  16. --------------------------------------------
  17. 1. It's a diagnostic logging **API** library, not a diagnostic logging
  18. library
  19. 2. It's open-source, and 100% free
  20. 3. It depends on several other libraries, but they're also open source and
  21. 100% free
  22. 4. It's incredibly efficient, and is faster than all other serious C++
  23. diagnostic logging libraries by a huge margin (up to two orders of
  24. magnitude)
  25. 5. It is 100% type-safe
  26. 6. Selection of logging transport (i.e. "back-end(s)") is done at link-time,
  27. for very good reason
  28. 7. It's highly extensible
  29. 8. It's being used by serious commercial enterprises, including very high
  30. throughput financial systems
  31. 9. It's highly portable - including most C++ compilers and most/all flavours
  32. of UNIX, Linux, Mac OS-X and Windows
  33. 10. Pantheios is under active development from a highly motivated team, who
  34. have the ambition that it will become the diagnostic logging API of
  35. choice for all C++ programmers who wish to have performance without
  36. sacrificing robustness or flexibility; the team want to hear from you how
  37. they can better achieve these aims
  38. Details:
  39. - - - -
  40. 1. It's a diagnostic logging **API** library, not a diagnostic logging
  41. library
  42. The Pantheios architecture is split into four parts:
  43. - Application Layer - you use this to create diagnostic logging
  44. statements in your application code
  45. - Core - this is what ties it all together. Apart from initialising the
  46. core (which happens automatically in C++ compilation units), you
  47. don't need to do anything with the core
  48. - Front-end - this is what decides which statements are written out, as
  49. well as providing the application identity (name) to the Core during
  50. initialisation. There are several stock Front-ends included in the
  51. Pantheios distribution, but you may well implement your own
  52. - Back-end - this is what emits the logging statement (if the front-end
  53. allows it to be written) to the outside world. There are a number of
  54. stock Back-ends included in the Pantheios distribution, but you may
  55. well implement your own
  56. One criticism that we sometimes get from new users goes along the lines
  57. of
  58. " the performance is brilliant, but you don't have all the features of
  59. log4cxx "
  60. We know. It's designed to be that way.
  61. Pantheios is a diagnostic logging API library. The interaction between
  62. Application Layer, Core and Front-end means that nothing else can come
  63. anywhere near Pantheios in terms of performance, type-safety or
  64. extensibility. But it's specifically designed for you to use it _above_
  65. existing logging libraries that have more features. To do so, you can
  66. write a simple back-end to wrap, say, log4cxx, and plug it in at
  67. link-time. That way you get all the performance and safety of Pantheios,
  68. with the rich feature set of log4cxx. It's win-win!
  69. 2. It's open-source, and 100% free
  70. It uses the widely appreciated (modified-)BSD license.
  71. 3. It depends on several other libraries, but they're also open source and
  72. 100% free
  73. Apart from one library - STLSoft - all the libraries on which Pantheios
  74. depends are bundled with the Pantheios distribution. These libraries are:
  75. - xTests (see http://xtests.org/)
  76. A simple, lightweight unit-/component-testing libary for C
  77. and C++
  78. This library is used only in the unit-/component-testing
  79. - b64 (see http://synesis.com.au/software/b64.html)
  80. A simple, exceedingly lightweight implementation of the Base-64
  81. encoding
  82. This library is used by the pantheios::b64 inserter class
  83. - shwild (see http://shwild.org/)
  84. An implementation (UNIX) shell compatible wildcards.
  85. This library is used only in the unit-/component-testing
  86. The other library on which Pantheios depends is STLSoft (see
  87. http://stlsoft.org). STLSoft is *not* an STL replacement, it is an STL
  88. extension library. Additionally, it provides a number of system and
  89. compiler discrimination features that Pantheios uses to simplify its
  90. implementation
  91. 4. It's incredibly efficient, and is faster than all other serious C++
  92. diagnostic logging libraries by a huge margin (up to two orders of
  93. magnitude)
  94. See http://pantheios.sourceforge.net/performance.html#sweet-spot if you
  95. don't believe us
  96. 5. It is 100% type-safe
  97. ... unlike any diagnostic logging library built on C's Streams or C++'s
  98. IOStreams libraries.
  99. 6. Selection of logging transport (i.e. "back-end(s)") is done at link-time,
  100. for very good reason
  101. The reason is simple: a diagnostic logging library must be available
  102. whenever _any_ part of the application code needs it. In C++, it's
  103. possible to execute a significant amount of functionality during dynamic
  104. initialisation, so we cannot afford to wait for main() to set up the
  105. logging.
  106. The consequence of this is Pantheios' only hard-to-use aspect, that of
  107. setting up the linking. There are several tutorials available for this
  108. purpose in the documentation
  109. 7. It's highly extensible
  110. Pantheios ships with a number of stock transports (known as
  111. "back-end(s)"), including console, Syslog, COM Error Object, speech,
  112. Windows Debugger, Windows Event Log. You can extend the range with a
  113. custom back-end by implementing a very simple C-API. The details are in
  114. the documentation.
  115. By default, the Pantheios Application Layer understands a large range of
  116. string types (and types that can be meaningfully converted into strings,
  117. such as struct tm, FILETIME, struct in_addr, and so on). Pantheios allows
  118. you to infinitely extend the range of types that may be incorporated into
  119. logging statements in your application code. There is an extensive
  120. tutorial on this in the documentation.
  121. 8. It's being used by serious commercial enterprises, including very high
  122. throughput financial systems
  123. Pantheios is in use by companies in Australia, US, and throughout the
  124. world.
  125. One notable user in New York contacted Synesis Software
  126. (see http://synesis.com.au/) in Dec 2007 to design and implement custom
  127. front-/back-ends to enhance the performance to an insane degree - not one
  128. processor cycle is wasted - because they believe that their systems will
  129. need to produce more diagnostic logging output than any other softare
  130. system in history.
  131. An NDA prevents us from naming the client, their business, or the nature
  132. of the customisations, but we can say that they're delighted with the
  133. system's performance and reliability. They said that Pantheios operates
  134. with "clock-cycle speed"!
  135. 9. It's highly portable - including most C++ compilers and most/all flavours
  136. of UNIX, Linux, Mac OS-X and Windows
  137. Pantheios has been tested on a wide range of C++ compilers, and a
  138. reasonable range of operating systems. In UNIX flavours, there are no
  139. platform-specific constructs used. Any new compiler/platform will
  140. require a minimum of enhancement to the STLSoft configuration. The
  141. development team are always happy to help/advise any such user.
  142. 10. Pantheios is under active development from a highly motivated team, who
  143. have the ambition that it will become the diagnostic logging API of
  144. choice for all C++ programmers who wish to have performance without
  145. sacrificing robustness or flexibility; the team want to hear from you how
  146. they can better achieve these aims
  147. That pretty much says it all. We know it's the best concept based on the
  148. best theory, and we're keen to help make it work well for all users
  149. everywhere.
  150. =============================== End of file ================================