-
Couldn't load subscription status.
- Fork 3.4k
HBASE-26723 Switch to use log4j2.properties file to configure log4j2 #4096
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,35 @@ | ||
| #/** | ||
| # * Licensed to the Apache Software Foundation (ASF) under one | ||
| # * or more contributor license agreements. See the NOTICE file | ||
| # * distributed with this work for additional information | ||
| # * regarding copyright ownership. The ASF licenses this file | ||
| # * to you under the Apache License, Version 2.0 (the | ||
| # * "License"); you may not use this file except in compliance | ||
| # * with the License. You may obtain a copy of the License at | ||
| # * | ||
| # * http://www.apache.org/licenses/LICENSE-2.0 | ||
| # * | ||
| # * Unless required by applicable law or agreed to in writing, software | ||
| # * distributed under the License is distributed on an "AS IS" BASIS, | ||
| # * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| # * See the License for the specific language governing permissions and | ||
| # * limitations under the License. | ||
| # */ | ||
|
|
||
| status = warn | ||
| dest = err | ||
| name = PropertiesConfig | ||
|
|
||
| # console | ||
| appender.console.type = Console | ||
| appender.console.target = SYSTEM_ERR | ||
| appender.console.name = console | ||
| appender.console.layout.type = PatternLayout | ||
| appender.console.layout.pattern = %d{ISO8601} %-5p [%t] %c{2}: %m%n | ||
|
|
||
| rootLogger = WARN,console | ||
|
|
||
| # ZooKeeper will still put stuff at WARN | ||
| logger.zookeeper.name = org.apache.zookeeper | ||
| logger.zookeeper.level = ERROR | ||
|
|
This file was deleted.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,137 @@ | ||
| #/** | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why can't we continue to use the existing properties file that ships in HEAD of branch-2? It is because even with the Log4J 1 compatibility stuff we still can't make it compatible with the log4j1 properties files? For operational compatibility in minor releases, after users upgrade, their existing logging configuration should still work. It's fine to recommend that they make changes, like a switch to the XML format, to gain access to improvements, but it would appear log4j has decided to make arbitrary changes that break existing configurations still, so logging wouldn't work if the user doesn't port. Here are the first few lines from log4j.properties in branch-2. It looks like the new properties file format drops the "log4j" prefix? Can we keep it? Or, we could implement logic in the launch script that looks at the user's existing log4j properties file and rewrites it, and uses the rewritten version, if it detects this? Or we could intercept the load of the properties file and do some simple string frobbing to handle this case? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is log4j2.properties, not log4j.properties. Users could keep their log4j.properties and it will be handled by log4j-1.2-api. Of course if you have some customized appenders then there will be problems. The log4j2 uses a different syntax, so if users want to fully upgrade to log4j2 then they need to change their configuration ways. But if you want to have the ability to config level and appenders at once, properties file is the only possible way. For other configuration format, such as xml or yaml, there is no way to configuration them at once. |
||
| # * Licensed to the Apache Software Foundation (ASF) under one | ||
| # * or more contributor license agreements. See the NOTICE file | ||
| # * distributed with this work for additional information | ||
| # * regarding copyright ownership. The ASF licenses this file | ||
| # * to you under the Apache License, Version 2.0 (the | ||
| # * "License"); you may not use this file except in compliance | ||
| # * with the License. You may obtain a copy of the License at | ||
| # * | ||
| # * http://www.apache.org/licenses/LICENSE-2.0 | ||
| # * | ||
| # * Unless required by applicable law or agreed to in writing, software | ||
| # * distributed under the License is distributed on an "AS IS" BASIS, | ||
| # * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| # * See the License for the specific language governing permissions and | ||
| # * limitations under the License. | ||
| # */ | ||
|
|
||
| status = warn | ||
| dest = err | ||
| name = PropertiesConfig | ||
|
|
||
| # Console appender | ||
| appender.console.type = Console | ||
| appender.console.target = SYSTEM_ERR | ||
| appender.console.name = console | ||
| appender.console.layout.type = PatternLayout | ||
| appender.console.layout.pattern = %d{ISO8601} %-5p [%t] %c{2}: %.1000m%n | ||
|
|
||
| # Daily Rolling File Appender | ||
| appender.DRFA.type = RollingFile | ||
| appender.DRFA.name = DRFA | ||
| appender.DRFA.fileName = ${sys:hbase.log.dir:-.}/${sys:hbase.log.file:-hbase.log} | ||
| appender.DRFA.filePattern = ${sys:hbase.log.dir:-.}/${sys:hbase.log.file:-hbase.log}.%d{yyyy-MM-dd} | ||
| appender.DRFA.createOnDemand = true | ||
| appender.DRFA.layout.type = PatternLayout | ||
| appender.DRFA.layout.pattern = %d{ISO8601} %-5p [%t] %c{2}: %.1000m%n | ||
| appender.DRFA.policies.type = Policies | ||
| appender.DRFA.policies.time.type = TimeBasedTriggeringPolicy | ||
| appender.DRFA.policies.time.interval = 1 | ||
| appender.DRFA.policies.time.modulate = true | ||
| appender.DRFA.policies.size.type = SizeBasedTriggeringPolicy | ||
| appender.DRFA.policies.size.size = ${sys:hbase.log.maxfilesize:-256MB} | ||
| appender.DRFA.strategy.type = DefaultRolloverStrategy | ||
| appender.DRFA.strategy.max = ${sys:hbase.log.maxbackupindex:-20} | ||
|
|
||
| # Rolling File Appender | ||
| appender.RFA.type = RollingFile | ||
| appender.RFA.name = RFA | ||
| appender.RFA.fileName = ${sys:hbase.log.dir:-.}/${sys:hbase.log.file:-hbase.log} | ||
| appender.RFA.filePattern = ${sys:hbase.log.dir:-.}/${sys:hbase.log.file:-hbase.log}.%i | ||
| appender.RFA.createOnDemand = true | ||
| appender.RFA.layout.type = PatternLayout | ||
| appender.RFA.layout.pattern = %d{ISO8601} %-5p [%t] %c{2}: %.1000m%n | ||
| appender.RFA.policies.type = Policies | ||
| appender.RFA.policies.size.type = SizeBasedTriggeringPolicy | ||
| appender.RFA.policies.size.size = ${sys:hbase.log.maxfilesize:-256MB} | ||
| appender.RFA.strategy.type = DefaultRolloverStrategy | ||
| appender.RFA.strategy.max = ${sys:hbase.log.maxbackupindex:-20} | ||
|
|
||
| # Security Audit Appender | ||
| appender.RFAS.type = RollingFile | ||
| appender.RFAS.name = RFAS | ||
| appender.RFAS.fileName = ${sys:hbase.log.dir:-.}/${sys:hbase.security.log.file:-SecurityAuth.audit} | ||
| appender.RFAS.filePattern = ${sys:hbase.log.dir:-.}/${sys:hbase.security.log.file:-SecurityAuth.audit}.%i | ||
| appender.RFAS.createOnDemand = true | ||
| appender.RFAS.layout.type = PatternLayout | ||
| appender.RFAS.layout.pattern = %d{ISO8601} %-5p [%t] %c{2}: %.1000m%n | ||
| appender.RFAS.policies.type = Policies | ||
| appender.RFAS.policies.size.type = SizeBasedTriggeringPolicy | ||
| appender.RFAS.policies.size.size = ${sys:hbase.security.log.maxfilesize:-256MB} | ||
| appender.RFAS.strategy.type = DefaultRolloverStrategy | ||
| appender.RFAS.strategy.max = ${sys:hbase.security.log.maxbackupindex:-20} | ||
|
|
||
| # Http Access Log RFA, uncomment this if you want an http access.log | ||
| # appender.AccessRFA.type = RollingFile | ||
| # appender.AccessRFA.name = AccessRFA | ||
| # appender.AccessRFA.fileName = /var/log/hbase/access.log | ||
| # appender.AccessRFA.filePattern = /var/log/hbase/access.log.%i | ||
| # appender.AccessRFA.createOnDemand = true | ||
| # appender.AccessRFA.layout.type = PatternLayout | ||
| # appender.AccessRFA.layout.pattern = %m%n | ||
| # appender.AccessRFA.policies.type = Policies | ||
| # appender.AccessRFA.policies.size.type = SizeBasedTriggeringPolicy | ||
| # appender.AccessRFA.policies.size.size = 200MB | ||
| # appender.AccessRFA.strategy.type = DefaultRolloverStrategy | ||
| # appender.AccessRFA.strategy.max = 10 | ||
|
|
||
| # Null Appender | ||
| appender.NullAppender.type = Null | ||
| appender.NullAppender.name = NullAppender | ||
|
|
||
| rootLogger = ${sys:hbase.root.logger:-INFO,console} | ||
|
|
||
| logger.SecurityLogger.name = SecurityLogger | ||
| logger.SecurityLogger = ${sys:hbase.security.logger:-INFO,console} | ||
| logger.SecurityLogger.additivity = false | ||
|
|
||
| # Custom Logging levels | ||
| # logger.zookeeper.name = org.apache.zookeeper | ||
| # logger.zookeeper.level = ERROR | ||
|
|
||
| # logger.FSNamesystem.name = org.apache.hadoop.fs.FSNamesystem | ||
| # logger.FSNamesystem.level = DEBUG | ||
|
|
||
| # logger.hbase.name = org.apache.hadoop.hbase | ||
| # logger.hbase.level = DEBUG | ||
|
|
||
| # logger.META.name = org.apache.hadoop.hbase.META | ||
| # logger.META.level = DEBUG | ||
|
|
||
| # Make these two classes below DEBUG to see more zk debug. | ||
| # logger.ZKUtil.name = org.apache.hadoop.hbase.zookeeper.ZKUtil | ||
| # logger.ZKUtil.level = DEBUG | ||
|
|
||
| # logger.ZKWatcher.name = org.apache.hadoop.hbase.zookeeper.ZKWatcher | ||
| # logger.ZKWatcher.level = DEBUG | ||
|
|
||
| # logger.dfs.name = org.apache.hadoop.dfs | ||
| # logger.dfs.level = DEBUG | ||
|
|
||
| # Prevent metrics subsystem start/stop messages (HBASE-17722) | ||
| logger.MetricsConfig.name = org.apache.hadoop.metrics2.impl.MetricsConfig | ||
| logger.MetricsConfig.level = WARN | ||
|
|
||
| logger.MetricsSinkAdapte.name = org.apache.hadoop.metrics2.impl.MetricsSinkAdapter | ||
| logger.MetricsSinkAdapte.level = WARN | ||
|
|
||
| logger.MetricsSystemImpl.name = org.apache.hadoop.metrics2.impl.MetricsSystemImpl | ||
| logger.MetricsSystemImpl.level = WARN | ||
|
|
||
| # Disable request log by default, you can enable this by changing the appender | ||
| logger.http.name = http.requests | ||
| logger.http.additivity = false | ||
| logger.http = INFO,NullAppender | ||
| # Replace the above with this configuration if you want an http access.log | ||
| # logger.http = INFO,AccessRFA | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe this work will resolve the issue I see starting hbtop with latest branch-2 HEAD
This can be "fixed" by removing the JUL to SLF4J bridge stuff from default HBASE_OPTS. Seems not appropriate as a generic option for all processes.
I wonder if hbtop should have logging system properties set at all. It is a curses based command line application, not a daemon. If it has anything to log/print, it should go to the console.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Redirecting the log message all the slf4j should be default I think, and then we could decide whether to actually output it, but changing the log level, appenders, etc.
And I do not think the error here can be fixed by this change, it seems when starting hbtop we do not add some slf4j related jars. Should be a sperated issue.