Skip to content

Commit 514b9c0

Browse files
authored
Open [feature][function] add the ability to customize logging level for Go & Python functions (apache#16939)
Signed-off-by: laminar <[email protected]>
1 parent e530f34 commit 514b9c0

File tree

3 files changed

+21
-2
lines changed

3 files changed

+21
-2
lines changed

Diff for: pulsar-function-go/logutil/log.go

+7
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import (
3232
)
3333

3434
const (
35+
logLevelEnvName = "LOGGING_LEVEL"
3536
defaultLogLevel = log.InfoLevel
3637
defaultLogTimeFormat = "2006/01/02 15:04:05.000"
3738
)
@@ -175,6 +176,12 @@ func (f *TextFormatter) Format(entry *log.Entry) ([]byte, error) {
175176

176177
func init() {
177178
log.SetLevel(defaultLogLevel)
179+
// lookup and parse the logLevel variable
180+
if logLevelStr, exist := os.LookupEnv(logLevelEnvName); exist {
181+
if logLevel, err := log.ParseLevel(logLevelStr); err == nil {
182+
log.SetLevel(logLevel)
183+
}
184+
}
178185
log.AddHook(&contextHook{})
179186
log.SetFormatter(&TextFormatter{})
180187
}

Diff for: pulsar-functions/instance/src/main/python/log.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,10 @@ def init_logger(level, logfile, logging_config_file):
9090
os.environ['LOG_FILE'] = logfile
9191
logging.config.fileConfig(logging_config_file)
9292
Log = logging.getLogger()
93-
Log.setLevel(level)
93+
if level is not None:
94+
Log.setLevel(level)
95+
for h in Log.handlers:
96+
h.setLevel(level)
9497

9598
# set print to redirect to logger
9699
class StreamToLogger(object):

Diff for: pulsar-functions/instance/src/main/python/python_instance_main.py

+10-1
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ def main():
7878
parser.add_argument('--max_buffered_tuples', required=True, help='Maximum number of Buffered tuples')
7979
parser.add_argument('--logging_directory', required=True, help='Logging Directory')
8080
parser.add_argument('--logging_file', required=True, help='Log file name')
81+
parser.add_argument('--logging_level', required=False, help='Logging level')
8182
parser.add_argument('--logging_config_file', required=True, help='Config file for logging')
8283
parser.add_argument('--expected_healthcheck_interval', required=True, help='Expected time in seconds between health checks', type=int)
8384
parser.add_argument('--secrets_provider', required=False, help='The classname of the secrets provider')
@@ -154,7 +155,15 @@ def main():
154155
log_file = os.path.join(args.logging_directory,
155156
util.getFullyQualifiedFunctionName(function_details.tenant, function_details.namespace, function_details.name),
156157
"%s-%s.log" % (args.logging_file, args.instance_id))
157-
log.init_logger(logging.INFO, log_file, args.logging_config_file)
158+
logging_level = {"notset": logging.NOTSET,
159+
"debug": logging.DEBUG,
160+
"info": logging.INFO,
161+
"warn": logging.WARNING,
162+
"warning": logging.WARNING,
163+
"error": logging.ERROR,
164+
"critical": logging.CRITICAL,
165+
"fatal": logging.CRITICAL}.get(args.logging_level, None)
166+
log.init_logger(logging_level, log_file, args.logging_config_file)
158167

159168
Log.info("Starting Python instance with %s" % str(args))
160169

0 commit comments

Comments
 (0)