ViliusS commented on PR #3586:
URL: https://github.com/apache/logging-log4j2/pull/3586#issuecomment-2824475309

   > One particular thing that is bothering me about this _fix_ is... it breaks 
backward compatibility. We can say we're fixing the schema, but for users who 
have already been using the _broken_ schema, we are gonna create trouble. We can
   > 
   > * Cross our fingers, release the fixed schema, and think of a solution if 
we ever happen to receive a complaint
   > * Release the new schema under a different name (e.g., `GcpLayout2.json`)
   > 
   > @ppkarwasz, thoughts?
   > 
   > @ViliusS, would you mind adding a changelog entry file (i.e., 
`src/changelog/.2.x.x/3586_fix_GcpLayout.xml`), please? (Mind the `entry.type` 
attribute and `entry > issue` element.)
   
   Changelog added.
   
   Regarding backward compatibility I see it this way. The proposed changes are 
not really fixes, they are changes/improvements. Old schema probably worked in 
some sense, but required a little bit tinkering for proper GCP field mapping on 
Google side. It is natural that schemas change and they need to be re-adjusted, 
there is no way to avoid that when dealing with 3rd party services. The real 
question is when backward compatibility and how it should be broken.
   You are right that some users could be using old schema already, so let's 
try to list what's actually changed and the use cases.
   1) The `timestamp` field users who just send the data from previous field 
directly to GCP not realizing that it is not mapped to real log timestamp. 
Nothing serious changes for them, new timestamp fields will be sent to GCP and 
automatically mapped to log timestamp. They will be missing previous 
`jsonPayload.timestamp` field on GCP side, but that should not break anything 
serious.
   2) `Timestamp` field users who processed current field values with Ops Agent 
or any other tool to be able to map it to GCP timestamp. Such tools usually 
just ignore missing field, but again information is now sent to GCP's timestamp 
field automatically, so nothing is lost.
   3) Removed `insertId` field. Nothing should depend on this field. It is for 
internal GCP usage and will now be generated automatically.
   4) Renamed/Changed `exception` format and removed separate `class` and 
`message` subfields. Some could depend on these fields in Google Cloud 
Monitoring but would consider it as an edge case, since the exception was/is 
duplicated in main `message` field anyway and was/is caught by the Google Error 
Reporting automatically. There was/is not need to configure separate monitoring.
   5) Renamed `thread` and `logger` fields. Some could depend on these fields 
in Google Cloud Monitoring but, again, I would consider it as an edge case.
   
   Considering that new adjustments makes it a lot easier to send logs to GCP 
now without major processing in between, and if they are included in 2.25.0, I 
think it is fair.
   
   @ppkarwasz I wouldn't call it `OpsAgent`. This format could be used to print 
directly to stdout which is then automatically sent to GCP on Google's 
Kubernetes Engine or serverless AppEngine services. I would not differentiate 
it from ECS or Gelf you already support.
   I also don't think it belongs to Ops Agent repo. If, for example, I want to 
use two monitoring systems and both require different formats moving JSON 
template elsewhere means that I must use Ops Agent for one monitoring solution, 
and then use different agent for another solution. Having JSON templates in 
central repo makes things must easier and more transparent.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@logging.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to