I think this is an observability related idea which is still rather new to
many companies who are just finally embracing DevOps in the first place. I
love the idea though!

On Mon, Jun 11, 2018 at 10:32, Ralph Goers <ralph.go...@dslextreme.com>
wrote:

> Really? I would think almost everything would want to track who made what
> change to the system.
>
> Ralph
>
> > On Jun 11, 2018, at 5:20 AM, Matt Sicker <boa...@gmail.com> wrote:
> >
> > Ok, thanks for the clarification. It sounded far more advanced, and I’m
> > getting a better picture here. I’ve never worked in a domain that
> requires
> > auditing before.
> >
> > On Mon, Jun 11, 2018 at 08:03, Apache <ralph.go...@dslextreme.com>
> wrote:
> >
> >> No. It implements that feature through the request context but I
> wouldn’t
> >> use a catalog for simple trace logging.
> >>
> >> Ralph
> >>
> >>> On Jun 11, 2018, at 4:29 AM, Matt Sicker <boa...@gmail.com> wrote:
> >>>
> >>> 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>
> >>
> >>
> >> --
> > Matt Sicker <boa...@gmail.com>
>
>
> --
Matt Sicker <boa...@gmail.com>

Reply via email to