• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

devonfw / IDEasy / 17730250095

15 Sep 2025 10:38AM UTC coverage: 68.686% (+0.01%) from 68.674%
17730250095

push

github

web-flow
#1460: added --no-colors option to disable colored logging and fixed wix logging (#1483)

3401 of 5419 branches covered (62.76%)

Branch coverage included in aggregate %.

8880 of 12461 relevant lines covered (71.26%)

3.13 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

88.71
cli/src/main/java/com/devonfw/tools/ide/log/IdeLoggerImpl.java
1
package com.devonfw.tools.ide.log;
2

3
import java.util.Objects;
4
import java.util.function.Function;
5

6
/**
7
 * Implementation of {@link IdeLogger}.
8
 */
9
public class IdeLoggerImpl implements IdeLogger {
10

11
  private final AbstractIdeSubLogger[] loggers;
12

13
  protected final IdeLogListener listener;
14

15
  /**
16
   * @param minLogLevel the minimum enabled {@link IdeLogLevel}.
17
   * @param factory the factory to create active {@link IdeSubLogger} instances.
18
   */
19
  public IdeLoggerImpl(IdeLogLevel minLogLevel, Function<IdeLogLevel, AbstractIdeSubLogger> factory) {
20

21
    super();
2✔
22
    IdeLogLevel[] levels = IdeLogLevel.values();
2✔
23
    this.loggers = new AbstractIdeSubLogger[levels.length];
5✔
24
    IdeLogListener listener = null;
2✔
25
    for (IdeLogLevel level : levels) {
16✔
26
      this.loggers[level.ordinal()] = factory.apply(level);
9✔
27
      if (listener == null) {
2✔
28
        listener = this.loggers[level.ordinal()].listener;
7✔
29
      }
30
    }
31
    this.listener = listener;
3✔
32
    setLogLevel(minLogLevel);
4✔
33
  }
1✔
34

35
  @Override
36
  public IdeSubLogger level(IdeLogLevel level) {
37

38
    IdeSubLogger logger = this.loggers[level.ordinal()];
6✔
39
    Objects.requireNonNull(logger);
3✔
40
    return logger;
2✔
41
  }
42

43
  /**
44
   * Sets the log level.
45
   *
46
   * @param logLevel {@link IdeLogLevel}
47
   * @return the previous set logLevel {@link IdeLogLevel}
48
   */
49
  public IdeLogLevel setLogLevel(IdeLogLevel logLevel) {
50

51
    IdeLogLevel previousLogLevel = null;
2✔
52
    for (IdeLogLevel level : IdeLogLevel.values()) {
16✔
53
      boolean enabled = level.ordinal() >= logLevel.ordinal();
9✔
54
      if ((previousLogLevel == null) && this.loggers[level.ordinal()].isEnabled()) {
9!
55
        previousLogLevel = level;
2✔
56
      }
57
      setLogLevel(level, enabled);
4✔
58
    }
59
    if ((previousLogLevel == null) || (previousLogLevel.ordinal() > IdeLogLevel.INFO.ordinal())) {
7!
60
      previousLogLevel = IdeLogLevel.INFO;
×
61
    }
62
    return previousLogLevel;
2✔
63
  }
64

65
  /**
66
   * @param colored the new {@link AbstractIdeSubLogger#isColored() colored flag}.
67
   */
68
  protected void setLogColors(boolean colored) {
69

70
    for (IdeLogLevel level : IdeLogLevel.values()) {
16✔
71
      this.loggers[level.ordinal()].setColored(colored);
7✔
72
    }
73
  }
1✔
74

75
  /**
76
   * @param logLevel the {@link IdeLogLevel} to modify.
77
   * @param enabled - {@code true} to enable, {@code false} to disable.
78
   */
79
  public void setLogLevel(IdeLogLevel logLevel, boolean enabled) {
80

81
    this.loggers[logLevel.ordinal()].setEnabled(enabled);
7✔
82
  }
1✔
83

84
  /**
85
   * Ensure the logging system is initialized.
86
   */
87
  public void activateLogging() {
88

89
    if (this.listener instanceof IdeLogListenerBuffer buffer) {
9!
90
      // https://github.com/devonfw/IDEasy/issues/754
91
      buffer.flushAndEndBuffering(this);
3✔
92
    }
93
  }
1✔
94

95
  /**
96
   * Disables the logging system (temporary).
97
   *
98
   * @param threshold the {@link IdeLogLevel} acting as threshold.
99
   * @see com.devonfw.tools.ide.context.IdeContext#runWithoutLogging(Runnable, IdeLogLevel)
100
   */
101
  public void deactivateLogging(IdeLogLevel threshold) {
102

103
    if (this.listener instanceof IdeLogListenerBuffer buffer) {
9!
104
      buffer.startBuffering(threshold);
4✔
105
    } else {
106
      throw new IllegalStateException();
×
107
    }
108
  }
1✔
109

110
  /**
111
   * Internal method to set the {@link IdeLogArgFormatter}.
112
   *
113
   * @param argFormatter the {@link IdeLogArgFormatter}.
114
   */
115
  public void setArgFormatter(IdeLogArgFormatter argFormatter) {
116

117
    for (AbstractIdeSubLogger logger : this.loggers) {
17✔
118
      logger.setArgFormatter(argFormatter);
3✔
119
    }
120
  }
1✔
121

122
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc