-
Enhancement
-
Resolution: Won't Fix
-
P4
-
None
-
8u74
-
generic
-
generic
A DESCRIPTION OF THE REQUEST :
I would like to be provided `Logger#log(String msg)`, which should forward to `#log(Level, String)` and use as level what is returned by Logger#getLevel.
As simple as the following:
```
public void log(String msg) {
log(this.levelObject, msg);
}
```
JUSTIFICATION :
In order not to have to store the level in the state of a client object, when the level is supposed to be always the same.
My use case is the following:
```
public class WebElementLogger extends WebElementDecorator {
protected final Logger logger;
protected final Level logLevel;
public WebElementLogger(WebElement element, Level logLevel) {
super(element);
this.logLevel = logLevel;
this.logger = Logger.getLogger(element.getClass().getName());
this.logger.setLevel(logLevel);
}
@Override
public void click() {
logger.log(logLevel, String.format("click %s", element));
super.click();
}
@Override
public void submit() {
logger.log(logLevel, String.format("submit %s", element));
super.submit();
}
```
WebElementLogger can be configured with a Level, and then it is supposed to log every operation with the same level, which is not known a priori.
Currently I am forced to save the level in a field (to avoid calling getLevel every time), and then to pass it to every call to #log.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
I should be able to write the following instead:
```
public class WebElementLogger extends WebElementDecorator {
protected final Logger logger;
public WebElementLogger(WebElement element, Level logLevel) {
super(element);
this.logger = Logger.getLogger(element.getClass().getName());
this.logger.setLevel(logLevel);
}
@Override
public void click() {
logger.log(String.format("click %s", element));
super.click();
}
@Override
public void submit() {
logger.log(String.format("submit %s", element));
super.submit();
}
```
I would like to be provided `Logger#log(String msg)`, which should forward to `#log(Level, String)` and use as level what is returned by Logger#getLevel.
As simple as the following:
```
public void log(String msg) {
log(this.levelObject, msg);
}
```
JUSTIFICATION :
In order not to have to store the level in the state of a client object, when the level is supposed to be always the same.
My use case is the following:
```
public class WebElementLogger extends WebElementDecorator {
protected final Logger logger;
protected final Level logLevel;
public WebElementLogger(WebElement element, Level logLevel) {
super(element);
this.logLevel = logLevel;
this.logger = Logger.getLogger(element.getClass().getName());
this.logger.setLevel(logLevel);
}
@Override
public void click() {
logger.log(logLevel, String.format("click %s", element));
super.click();
}
@Override
public void submit() {
logger.log(logLevel, String.format("submit %s", element));
super.submit();
}
```
WebElementLogger can be configured with a Level, and then it is supposed to log every operation with the same level, which is not known a priori.
Currently I am forced to save the level in a field (to avoid calling getLevel every time), and then to pass it to every call to #log.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
I should be able to write the following instead:
```
public class WebElementLogger extends WebElementDecorator {
protected final Logger logger;
public WebElementLogger(WebElement element, Level logLevel) {
super(element);
this.logger = Logger.getLogger(element.getClass().getName());
this.logger.setLevel(logLevel);
}
@Override
public void click() {
logger.log(String.format("click %s", element));
super.click();
}
@Override
public void submit() {
logger.log(String.format("submit %s", element));
super.submit();
}
```