### Feature and motivation

## Overview

EdgeDriverService in Selenium Java binding has six properties; `webdriver.edge.driver`, `webdriver.edge.logfile`, `webdriver.edge.verboseLogging`, `webdriver.edge.silentOutput`, `webdriver.edge.withAllowedIps`, and `webdriver.edge.disableBuildCheck`. These options are very helpful in operating Edge server nodes.

https://github.com/hgsgtk/selenium/blob/036ee7f6aec797f5fe4608d2f7673e59d7f548b5/java/src/org/openqa/selenium/edge/EdgeDriverService.java#L46

One feature I feel missing is that there are no APIs to customize the log level. 

## Current possible solutions

For example, when I want to set the log-level=INFO, I have only one option, to set the --log-level option to msedgedriver directly.

```
$ ./msedgedriver --log-level=INFO
```

However, this way has some drawbacks.

First, it requires us a complex flow which combines with the system property `webdriver.edge.driver` and some wrapped scripts.

For example: set a wrapper batch file to the webdriver.edge.driver property.

```
java -Dwebdriver.edge.driver=edgedriver_wrapper.bat
```

And then, a wrapped batch file execute msedgedriver with the --log-level option.

```
C:\path\msedgedriver.exe --log-level $args
```

Another drawback is that command option settings must be written in multiple places. I understand that it doesn't make sense to support ALL options (e.g. an experimental option --replayable). But I believe the --log-level is commonly helpful, as is the --verbose option. 

In addition, the property `webdriver.edge.verboseLogging` is not a perfect solution because it indicates to set the option `--verbose` option (equivalent to --log-level=ALL).

### Usage example

We can use the new system property like this:

```
System.setProperty("webdriver.edge.loglevel", "INFO");
EdgeDriverService service = EdgeDriverService.createDefaultService();

EdgeDriver driver = new EdgeDriver(service);
```
* Configures the comma-separated list of remote IPv4 addresses which are allowed to connect
     * to the driver server.
     *
     * @param allowedListIps Comma-separated list of remote IPv4 addresses.
     * @return A self reference.
     */
    public EdgeDriverService.Builder withAllowedListIps(String allowedListIps) {
      this.allowedListIps = allowedListIps;
      return this;
    }
    @Override
    protected File findDefaultExecutable() {
      return findExecutable(
        "msedgedriver", EDGE_DRIVER_EXE_PROPERTY,
        "https:docs.microsoft.com/en-us/microsoft-edge/webdriver-chromium/",
        "https:developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/");
    }
    @Override
    protected List<String> createArgs() {
      if (getLogFile() == null) {
        String logFilePath = System.getProperty(EDGE_DRIVER_LOG_PROPERTY);
        if (logFilePath != null) {
          withLogFile(new File(logFilePath));
        }
      }
      List<String> args = new ArrayList<>();
      args.add(String.format("--port=%d", getPort()));
      if (getLogFile() != null) {
        args.add(String.format("--log-path=%s", getLogFile().getAbsolutePath()));
      }