Javolution 6.0.0 java
LogContextImpl.java
Go to the documentation of this file.
1 /*
2  * Javolution - Java(TM) Solution for Real-Time and Embedded Systems
3  * Copyright (C) 2012 - Javolution (http://javolution.org/)
4  * All rights reserved.
5  *
6  * Permission to use, copy, modify, and distribute this software is
7  * freely granted, provided that this notice is preserved.
8  */
9 package javolution.context.internal;
10 
14 
15 import org.osgi.service.log.LogService;
16 
20 public final class LogContextImpl extends LogContext {
21 
22  private static final Object[] NONE = new Object[0];
23  private static final int[] TO_OSGI_LEVEL = { LogService.LOG_DEBUG,
24  LogService.LOG_INFO, LogService.LOG_WARNING, LogService.LOG_ERROR };
25 
26  private Level level; // Null to use configurable LEVEL.
27  private Object[] prefix = NONE;
28  private Object[] suffix = NONE;
29 
30  @Override
31  public void prefix(Object... pfx) {
32  Object[] tmp = new Object[prefix.length + pfx.length];
33  System.arraycopy(pfx, 0, tmp, 0, pfx.length);
34  System.arraycopy(prefix, 0, tmp, pfx.length, prefix.length);
35  prefix = tmp;
36  }
37 
38  @Override
39  public void setLevel(Level level) {
40  this.level = level;
41  }
42 
43  @Override
44  public void suffix(Object... sfx) {
45  Object[] tmp = new Object[suffix.length + sfx.length];
46  System.arraycopy(suffix, 0, tmp, 0, suffix.length);
47  System.arraycopy(sfx, 0, tmp, suffix.length, sfx.length);
48  suffix = tmp;
49  }
50 
51  @Override
52  protected LogContext inner() {
53  LogContextImpl ctx = new LogContextImpl();
54  ctx.prefix = prefix;
55  ctx.suffix = suffix;
56  ctx.level = level;
57  return ctx;
58  }
59 
60  @Override
61  protected void log(Level level, Object... message) {
62  if (level.compareTo(currentLevel()) < 0)
63  return;
64  TextBuilder tmp = new TextBuilder();
65  Throwable exception = null;
66  for (Object pfx : prefix) {
67  tmp.append(pfx); // Uses TextContext for formatting.
68  }
69  for (Object obj : message) {
70  if ((exception == null) && (obj instanceof Throwable)) {
71  exception = (Throwable) obj;
72  } else {
73  tmp.append(obj); // Uses TextContext for formatting.
74  }
75  }
76  for (Object sfx : suffix) {
77  tmp.append(sfx); // Uses TextContext for formatting.
78  }
79  int osgiLevel = TO_OSGI_LEVEL[level.ordinal()];
80  String msg = tmp.toString();
81  Object[] logServices = OSGiServices.getLogServices();
82  for (Object logService : logServices) {
83  ((LogService)logService).log(osgiLevel, msg, exception);
84  }
85  }
86  private Level currentLevel() {
87  if (LEVEL == null) return Level.DEBUG; // Only during class initialization.
88  if (level == null) return LEVEL.get();
89  return level;
90  }
91 }
javolution.context.LogContext
Definition: LogContext.java:56
javolution
javolution.context.internal.LogContextImpl.prefix
Object[] prefix
Definition: LogContextImpl.java:27
javolution.context.internal.LogContextImpl.suffix
void suffix(Object... sfx)
Definition: LogContextImpl.java:44
javolution.text.TextBuilder.append
final TextBuilder append(char c)
Definition: TextBuilder.java:202
javolution.context.internal.LogContextImpl.level
Level level
Definition: LogContextImpl.java:26
javolution.context
Definition: AbstractContext.java:9
javolution.text.TextBuilder
Definition: TextBuilder.java:29
javolution.text.TextBuilder.toString
final String toString()
Definition: TextBuilder.java:780
javolution.context.internal.LogContextImpl.currentLevel
Level currentLevel()
Definition: LogContextImpl.java:86
javolution.context.internal.LogContextImpl.inner
LogContext inner()
Definition: LogContextImpl.java:52
javolution.context.LogContext.LEVEL
static final Configurable< Level > LEVEL
Definition: LogContext.java:73
javolution.context.internal.LogContextImpl.TO_OSGI_LEVEL
static final int[] TO_OSGI_LEVEL
Definition: LogContextImpl.java:23
javolution.text
Definition: CharArray.java:9
javolution.context.internal.LogContextImpl.log
void log(Level level, Object... message)
Definition: LogContextImpl.java:61
javolution.context.internal.LogContextImpl.NONE
static final Object[] NONE
Definition: LogContextImpl.java:22
javolution.context.internal.LogContextImpl.suffix
Object[] suffix
Definition: LogContextImpl.java:28
javolution.context.internal.LogContextImpl
Definition: LogContextImpl.java:20
javolution.osgi.internal
Definition: ConfigurableListenerImpl.java:9
javolution.osgi.internal.OSGiServices.getLogServices
static Object[] getLogServices()
Definition: OSGiServices.java:94
javolution.context.LogContext.Level.DEBUG
DEBUG
Definition: LogContext.java:63
javolution.osgi.internal.OSGiServices
Definition: OSGiServices.java:50
javolution.osgi
javolution.context.internal.LogContextImpl.prefix
void prefix(Object... pfx)
Definition: LogContextImpl.java:31
javolution.context.internal.LogContextImpl.setLevel
void setLevel(Level level)
Definition: LogContextImpl.java:39