Log4j 2
  1. Log4j 2
  2. LOG4J2-27

log4j 2 should implement the SLF4J API directly

    Details

    • Type: Wish Wish
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.0-alpha1
    • Component/s: API
    • Labels:
      None

      Description

      A PDF version of jspwiki-log.odf will be attached to this bug.

      On Dec 3, 2008, at 5:41 AM, Ceki Gulcu wrote on log4j-dev:

      Hello,

      As you are probably aware, more and more projects are adopting the
      SLF4J API. I would venture say that SLF4J's adoption rate is roughly
      equivalent to that of log4j itself. Although the SLF4J API is not
      perfect, most SLF4J users seem to be extremely happy with it.

      Harry Metske synthesized various logging paths in JSPWiki

      https://issues.apache.org/jira/secure/attachment/12394188/jspwiki-log.odp

      I was taken aback by the picture he paints. I think we as log4j
      committers owe it to Java developers to propose a saner logging model.

      Given the multiplicity of logging APIs in the Java world, I propose
      that log4j implement the SLF4J API directly. This can be done in the
      next version of log4j, say 1.3 or 2.0.

      Unfortunately, the adoption of the SLF4J API by log4j will be break
      100% compatibility with existing log4j clients. More precisely,
      logging statements passing java.lang.Object as the message parameter
      will need to be changed to java.lang.String. Assuming that the
      proportion of logging statements using objects instead string is
      extremely small, comparatively few users will be affected. More
      importantly, in my experience, even very large projects can be
      migrated to the SLF4J API within half an hour.

      There is even a tool called slf4j-migrator to help with such
      migration [1].

      Is there support for my proposal?

      [1] http://www.slf4j.org/migrator.html

      1. jspwiki-log.pdf
        44 kB
        Curt Arnold

        Activity

        Hide
        Curt Arnold added a comment -

        PDF version of OpenOffice document referenced in mailing list post. Original appears to have been an attachment to an undisclosed JIRA issue for JSPWiki.

        Show
        Curt Arnold added a comment - PDF version of OpenOffice document referenced in mailing list post. Original appears to have been an attachment to an undisclosed JIRA issue for JSPWiki.
        Hide
        Ceki Gulcu added a comment -

        There is actually a way to maintain 100% source code compatibility. The org.apache.log4j.Logger/Category classes would cetain their existing method signatures but would delegate to org.apache.log4j.impl.Logger class which would implement the org.slf4j.Logger interface. This is feasible as demonstrated by the log4j-over-slf4j module in SLF4J.

        Clients wishing to use the existing log4j classes could continue to do so. Those wishing to standardize on the SLF4J API could do so as well. Direct use of org.apache.log4j.impl.Logger would technically be possible but discouraged.

        As described above, there is a way to converge on the SLF4J API without breaking compatibility.

        Show
        Ceki Gulcu added a comment - There is actually a way to maintain 100% source code compatibility. The org.apache.log4j.Logger/Category classes would cetain their existing method signatures but would delegate to org.apache.log4j.impl.Logger class which would implement the org.slf4j.Logger interface. This is feasible as demonstrated by the log4j-over-slf4j module in SLF4J. Clients wishing to use the existing log4j classes could continue to do so. Those wishing to standardize on the SLF4J API could do so as well. Direct use of org.apache.log4j.impl.Logger would technically be possible but discouraged. As described above, there is a way to converge on the SLF4J API without breaking compatibility.
        Hide
        Ralph Goers added a comment -

        The experimental version of Log4j 2.0 contains a bridge between the SLF4J and Log4j 2.0 APIs.

        Show
        Ralph Goers added a comment - The experimental version of Log4j 2.0 contains a bridge between the SLF4J and Log4j 2.0 APIs.
        Hide
        Ralph Goers added a comment -

        Log4j 2 includes an SLF4J binding.

        Show
        Ralph Goers added a comment - Log4j 2 includes an SLF4J binding.
        Hide
        Ralph Goers added a comment -

        Closing since there have been no further updates.

        Show
        Ralph Goers added a comment - Closing since there have been no further updates.

          People

          • Assignee:
            Ralph Goers
            Reporter:
            Curt Arnold
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development