One thing I didn’t notice until now is that this is a superset of
distributed trace logging. Would you say that’s accurate?

On Mon, Jun 11, 2018 at 00:54, Apache <ralph.go...@dslextreme.com> wrote:

> One thing I forgot to mention. Although Log4J audit doesn’t make use of
> the product or category the catalog’s usefulness really comes into play
> when you want to create a UI to query and display the audit events. In that
> case associating events with products and/or categories can be quite
> helpful.
>
> Ralph
>
> > On Jun 10, 2018, at 1:36 AM, Apache <ralph.go...@dslextreme.com> wrote:
> >
> > Oh. You don’t have the maven plugin. Since it hasn’t been released yet
> you will have to build the Log4J audit project.
> >
> > Sent from my iPad
> >
> >> On Jun 10, 2018, at 12:23 AM, Remko Popma <remko.po...@gmail.com>
> wrote:
> >>
> >> That is with
> >> C:\Users\remko\IdeaProjects\logging-log4j-audit-sample>mvn --version
> >> Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d;
> >> 2017-10-18T16:58:13+09:00)
> >> Maven home: C:\apps\apache-maven-3.5.2\bin\..
> >> Java version: 1.8.0_161, vendor: Oracle Corporation
> >> Java home: C:\apps\jdk1.8.0_161\jre
> >> Default locale: en_GB, platform encoding: MS932
> >> OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
> >>
> >>
> >>> On Sun, Jun 10, 2018 at 4:21 PM, Remko Popma <remko.po...@gmail.com>
> wrote:
> >>>
> >>> getting this now
> >>>
> >>> [INFO] Reactor Summary:
> >>> [INFO]
> >>> [INFO] Audit Sample Parent ................................ SUCCESS [
> >>> 0.839 s]
> >>> [INFO] audit-service-api .................................. FAILURE [
> >>> 0.006 s]
> >>> [INFO] audit-service-war .................................. SKIPPED
> >>> [INFO] audit-service ...................................... SKIPPED
> >>> [INFO] sample-app ......................................... SKIPPED
> >>> [INFO] ------------------------------------------------------------
> >>> ------------
> >>> [INFO] BUILD FAILURE
> >>> [INFO] ------------------------------------------------------------
> >>> ------------
> >>> [INFO] Total time: 1.116 s
> >>> [INFO] Finished at: 2018-06-10T16:11:08+09:00
> >>> [INFO] Final Memory: 12M/245M
> >>> [INFO] ------------------------------------------------------------
> >>> ------------
> >>> [ERROR] Plugin
> org.apache.logging.log4j:log4j-audit-maven-plugin:1.0.0-SNAPSHOT
> >>> or one of its dependencies could not be resolved: Could not find
> artifact
> >>> org.apache.logging.log4j:log4j-audit-maven-plugin:jar:1.0.0-SNAPSHOT ->
> >>> [Help 1]
> >>> [ERROR]
> >>>
> >>>
> >>> On Sun, Jun 10, 2018 at 2:53 PM, Ralph Goers <
> ralph.go...@dslextreme.com>
> >>> wrote:
> >>>
> >>>> I finally have had time to take a breath and do something with this. I
> >>>> have tried to incorporate many of your comments in the documentation.
> I
> >>>> have updated my web site accordingly. Some comments are below.
> >>>>
> >>>> I really would like feedback on more than just the site as I need to
> >>>> release this.
> >>>>
> >>>>> On May 7, 2018, at 5:42 PM, Remko Popma <remko.po...@gmail.com>
> wrote:
> >>>>>
> >>>>> I had time to look at this during the flight, here it is:
> >>>>>
> >>>>> ----
> >>>>> index.html
> >>>>>
> >>>>> typo: Diagnostic logs are critical in aiding in maintaining the
> >>>>> servicability -> critical in maintaining?
> >>>>>
> >>>>> Overall, the first three sections, "What is Audit Logging", What is
> the
> >>>>> difference between audit logging and normal logging?" and "What is
> Log4j
> >>>>> Audit?" are very good: give good overview of the purpose and don't
> >>>> assume
> >>>>> prior knowledge.
> >>>>>
> >>>>> From the "Features" section, the narrative changes perspective from
> what
> >>>>> users would want to what Log4j Audit provides.
> >>>>> I would add a few sentences to that transition, something like:
> >>>>>
> >>>>> {quote}
> >>>>> (after Features)
> >>>>> Each application has its own audit events. Before using Log4j Audit,
> >>>>> applications need to define AuditMessages that capture the exact
> >>>> attributes
> >>>>> of its audit events. The [Getting Started](link) page provides a
> >>>> tutorial
> >>>>> that explains how to define audit events for an application.
> >>>>>
> >>>>> (after Audit Event Catalog header)
> >>>>> Once audit events are defined, they need to be maintained: as the
> >>>>> application evolves, developers will inevitably discover they need to
> >>>> add,
> >>>>> remove or change attributes of the audit events. Log4j Audit can
> persist
> >>>>> the audit event definitions in a JSON file. This file becomes the
> Audit
> >>>>> Event Catalog for the application. Log4j Audit is designed to store
> the
> >>>>> event definition file in a Git repository so that the evolution of
> the
> >>>>> audit events themselves have an audit trail in the Git history of the
> >>>> file.
> >>>>> Log4j Audit provides a web interface for editing the events.
> >>>>>
> >>>>> Log4j Audit uses the catalog of events to determine ... (continue
> with
> >>>>> current text of Audit Event Catalog)
> >>>>> {quote}
> >>>>>
> >>>>> Question about the Requirements section: it isn't clear to me (and
> >>>> likely
> >>>>> to other readers) why Dynamic Event Catalogs would require a database
> >>>>> instead of one or more JSON files. Is that explained somewhere?
> Perhaps
> >>>>> Dynamic Audit Events need a separate page or dedicated section
> >>>> somewhere.
> >>>>> The Getting Started page mentions "manage dynamic catalogs" in the
> >>>>> paragraph under "What you will build" but I couldn't find anything on
> >>>> the
> >>>>> topic of dynamic catalogs.
> >>>>>
> >>>>>
> >>>>>
> >>>>> ----
> >>>>> catalog.html
> >>>>>
> >>>>> From the first paragraph, I would remove "The events may be grouped
> by
> >>>>> Products and/or Categories, but at this time nothing in Log4j Audit
> >>>> makes
> >>>>> use of the product or catalog definitions". The same sentences is
> >>>> repeated
> >>>>> at the bottom of the page and since this feature is not used it is
> >>>>> confusing to me that the feature is so prominently mentioned in the
> >>>> first
> >>>>> paragraph of the page. I would consider removing this feature
> >>>> altogether.
> >>>>>
> >>>>> Overall this is a very good page. Succinct but complete. Consider
> >>>> moving it
> >>>>> above RequestContext in the left-hand navigation menu.
> >>>>>
> >>>>>
> >>>>>
> >>>>> ----
> >>>>> gettingStarted.html
> >>>>>
> >>>>> Overall, this page is only effective for people who actually perform
> the
> >>>>> steps and execute the commands mentioned in the page.
> >>>>>
> >>>>> It would be good if the page would also be useful for people who only
> >>>> read
> >>>>> the page but don't actually perform the steps:
> >>>>>
> >>>>> * Can the page also show an example of an audit event in JSON format.
> >>>> This
> >>>>> could be a simple event with few attributes (maybe a login event?) or
> >>>> the
> >>>>> transfer event that is used later in the page.
> >>>>> * I would also like to see the Java interface that is generated from
> >>>> this
> >>>>> JSON audit event.
> >>>>> * Finally, I would like to see how my application would use this
> >>>> generated
> >>>>> Java interface. How do I get an instance, how do I populate the
> >>>> attributes,
> >>>>> and what do I do with the instance after I populated it?
> >>>>>
> >>>>> I'm sure the above is available in the source code of the sample
> >>>>> application, but this page is a good place to show some of the
> >>>> highlights
> >>>>> of that source code with some explanatory text.
> >>>>>
> >>>>> Secondly, the page mentions remote audit logging and how the war file
> >>>>> provides endpoints for remove audit logging. Is it worth dedicating a
> >>>>> separate page to show how to configure end points for remote audit
> >>>> logging?
> >>>>>
> >>>>> Finally, about the catalog screenshots: I understand that attributes
> are
> >>>>> managed separately so they can be reused. The second screenshot shows
> >>>> the
> >>>>> billPay and deposit events. Are these events related to the transfer
> >>>> event
> >>>>> that is mentioned in the curl example in this page?
> >>>>
> >>>> These are events that take place in banking. billPay is paying a bill,
> >>>> deposit is depositing money into an account, transfer moves money
> from one
> >>>> account to another. I used these because many people understand these
> >>>> concepts.
> >>>>
> >>>>
> >>>>> I was trying to see how
> >>>>> they could be related but couldn't figure it out.
> >>>>> Also, what are the attributes for the billPay and deposit events?
> >>>>
> >>>> The attributes for these events are those shown in the “Assigned
> >>>> Attributes” column. The request context attributes are available for
> all
> >>>> events.
> >>>>
> >>>>> If the
> >>>>> Catalog Editor has a screen to show the attributes that are part of
> an
> >>>>> event then it may be good to add a screenshot for this (I guess this
> >>>> would
> >>>>> be the Edit Event screen) as well. That would tie all these concepts
> >>>>> together.
> >>>>
> >>>> As I said, the attributes are on the screen that is shown. I would
> >>>> suggest you perform the steps in the getting started so you can see
> for
> >>>> yourself.
> >>>>>
> >>>>>
> >>>>> ----
> >>>>> requestContext.html
> >>>>>
> >>>>> typo: typcial -> typical
> >>>>> typo: acrossall -> across all
> >>>>> typo: datbase -> database
> >>>>>
> >>>>> About Mapping Annotations:
> >>>>> This is still a bit abstract to me. Would it be possible to provide
> some
> >>>>> more explanation on when applications should use ClientServer, when
> >>>> Local,
> >>>>> and when Chained annotations? Perhaps some example use cases? Or, if
> >>>>> possible, tie this to the use case presented in the sample
> application
> >>>> (if
> >>>>> that makes sense)?
> >>>>
> >>>> I am not sure what more there is to say.  Local means a value in the
> >>>> request context is local to that server and should not be passed to
> called
> >>>> services. ClientServer means that a value is passed from the current
> >>>> application to services it calls. Chained means the value is
> associated
> >>>> with one request context field on the current server but will be in a
> >>>> different field in the called service. The example for chained is the
> >>>> current hostname. The hostname request context field always contains
> the
> >>>> host name of the current server. When calling a service the current
> host
> >>>> name moves to the callingHost field so that the called service knows
> what
> >>>> server called it.
> >>>>
> >>>>>
> >>>>> About Transporting the RequestContext:
> >>>>> Until now, the information was generically useful for all
> applications,
> >>>> but
> >>>>> this section is specifically useful for web applications.
> >>>>> For people who don't work on web applications this transition may be
> a
> >>>> bit
> >>>>> jarring.
> >>>>> Would it make sense for this section and the following two sections
> to
> >>>> be
> >>>>> moved to a separate page? Something like "Web Applications" or
> "Remote
> >>>>> Audit Logging”?
> >>>>
> >>>> This concept applies to any kind of distributed application. For
> example,
> >>>> with AMQP we do the exact same thing by copying the RequestContext
> fields
> >>>> into AMQP headers and then repopulating the RequestContext when the
> message
> >>>> is processed in the consumer. I have added text to describe this. I
> have
> >>>> components that do this for my day job but I have not added them to
> >>>> log4j-audi.
> >>>>
> >>>>>
> >>>>> ----
> >>>>> Remko
> >>>>>
> >>>>
> >>>>
> >>>>
> >>>
> >
> >
> >
>
>
> --
Matt Sicker <boa...@gmail.com>

Reply via email to