Configure operator logging in helm chart (#779)

Co-authored-by: Jason Gerlowski <gerlowskija@apache.org>
diff --git a/docs/running-the-operator.md b/docs/running-the-operator.md
index 0b3ba1e..16dd6c3 100644
--- a/docs/running-the-operator.md
+++ b/docs/running-the-operator.md
@@ -148,7 +148,18 @@
 * **--health-probe-bind-address=** The address to bind the health probe servlet on.
   If only a port is provided (e.g. `:8081`), then the metrics server will respond to requests with any Host header.
   (defaults to _:8081_)
-                        
+
+* **--zap-devel** Enables development mode. 
+  Changes logging to `console` encoder and `debug` level. (_true_ | _false_, defaults to _false_)
+
+* **--zap-log-level** Overrides the log level. 
+  Can be one of `debug`, `info`, `error`, or any integer value > 0 for custom verbosity. (_string_, defaults to _empty_)
+
+* **--zap-encoder** Overrides the log format.
+  Use `console` or `json`. (_string_, defaults to _empty_)
+
+* **--zap-stacktrace-level** Overrides the level for stack trace logging. (_string_, defaults to _empty_)
+
 ## Client Auth for mTLS-enabled Solr clusters
 
 For SolrCloud instances that run with mTLS enabled (see `spec.solrTLS.clientAuth`), the operator needs to supply a trusted certificate when making API calls to the Solr pods it is managing.
diff --git a/docs/upgrade-notes.md b/docs/upgrade-notes.md
index bd2f2b2..267a80b 100644
--- a/docs/upgrade-notes.md
+++ b/docs/upgrade-notes.md
@@ -125,6 +125,12 @@
 
 ## Upgrade Warnings and Notes
 
+### v0.10.0
+- **Logging now defaults to JSON format**
+  The new default for CLI flag `--zap-devel` is now `false`, causing log encoding to be `json` and log level to be `info`.
+  There is a new helm value `development` that can be set to `true` to switch to `console` encoding and `debug` level
+  that was the default in previous versions.
+
 ### v0.8.0
 - **The minimum supported Solr version is now 8.11**
   If you are unable to use a newer version of Solr, please install the `v0.7.1` version of the Solr Operator.
diff --git a/helm/solr-operator/Chart.yaml b/helm/solr-operator/Chart.yaml
index ef3e7d1..fb16b8e 100644
--- a/helm/solr-operator/Chart.yaml
+++ b/helm/solr-operator/Chart.yaml
@@ -60,6 +60,18 @@
       links:
         - name: Github PR
           url: https://github.com/apache/solr-operator/pull/774
+    - kind: changed
+      description: The default logging format is now `json`, and default log level is `info`.
+      links:
+        - name: Github PR
+          url: https://github.com/apache/solr-operator/pull/779
+    - kind: added
+      description: Ability to configure `development` mode as well as log encoder, log level and stacktrace log level
+      links:
+        - name: Github Issue
+          url: https://github.com/apache/solr-operator/issues/778
+        - name: Github PR
+          url: https://github.com/apache/solr-operator/pull/779
   artifacthub.io/images: |
     - name: solr-operator
       image: apache/solr-operator:v0.10.0-prerelease
diff --git a/helm/solr-operator/README.md b/helm/solr-operator/README.md
index 23766cf..2e44b87 100644
--- a/helm/solr-operator/README.md
+++ b/helm/solr-operator/README.md
@@ -191,6 +191,10 @@
 | tolerations | []object |  | Specify a list of Kubernetes tolerations for the Solr Operator pod |
 | priorityClassName | string | `""` | Give a priorityClassName for the Solr Operator pod |
 | sidecarContainers | []object |  | An optional list of additional containers to run along side the Solr Operator in its pod |
+| logger.level | string |  | Overrides the log level. Can be one of `debug`, `info`, `error`, or any integer value > 0 which corresponds to custom debug levels of increasing verbosity|
+| logger.encoder | string | | Overrides the log format. Use `console` or `json`. |
+| logger.stacktraceLevel | string | | Overrides the level for stackTrace logging. |
+| development | boolean | `false` | Enables development mode. This will change logging to `console` encoder and `debug` level |
 
 ### Configuring the Zookeeper Operator
 
diff --git a/helm/solr-operator/templates/deployment.yaml b/helm/solr-operator/templates/deployment.yaml
index e625124..b967e7b 100644
--- a/helm/solr-operator/templates/deployment.yaml
+++ b/helm/solr-operator/templates/deployment.yaml
@@ -78,6 +78,16 @@
         {{- else }}
         - "--leader-elect=false"
         {{- end }}
+        - --zap-devel={{ .Values.development }}
+        {{- if .Values.logger.encoder }}
+        - --zap-encoder={{ .Values.logger.encoder }}
+        {{- end }}
+        {{- if .Values.logger.level }}
+        - --zap-log-level={{ .Values.logger.level }}
+        {{- end }}
+        {{- if .Values.logger.stacktraceLevel }}
+        - --zap-stacktrace-level={{ .Values.logger.stacktraceLevel }}
+        {{- end }}
 
         env:
           - name: POD_NAMESPACE
diff --git a/helm/solr-operator/values.yaml b/helm/solr-operator/values.yaml
index 523b9fa..efdbe0a 100644
--- a/helm/solr-operator/values.yaml
+++ b/helm/solr-operator/values.yaml
@@ -19,6 +19,16 @@
 
 replicaCount: 1
 
+# Development mode configures certain settings for convenient development.
+# When 'true', logging will use: encoder=console, level=debug, stacktrace-level=warn
+development: false
+
+# These are default logger settings in production mode, but can be overridden here
+logger: {}
+  #encoder: json
+  #level: error
+  #stacktraceLevel: error
+
 image:
   repository: apache/solr-operator
   tag: v0.10.0-prerelease