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>