Ravi Nori has uploaded a new change for review.
Change subject: core : Allow redirection of all logs to syslog using extension
......................................................................
core : Allow redirection of all logs to syslog using extension
A custom handler in a new module
org.ovirt.engine.core.logger handles all
logging using extensions.
To use a new extension to handle logging
just pass the name of the extension using
ithe property loggerExtensionName. The syslog
server is passed using property syslogHost
in the custom-handler setting in ovirt-engine.xml.in
ovirt-engine.xml.in needs to modified to add the
custom handler
<custom-handler name="SYSLOG"
class="org.ovirt.engine.core.logger.LoggerHandler"
module="org.ovirt.engine.core.logger">
<level name="ALL"/>
<properties>
<property name="pattern" value="%d %-5p [%c] (%t) %s%E%n"/>
<property name="name" value="Syslog"/>
<property name="syslogHost" value="192.168.1.124"/>
<property name="loggerExtensionName" value="builtin-syslog-logger"/>
</properties>
</custom-handler>
all SYSLOG to root-logger
<root-logger>
<level name="INFO"/>
<handlers>
<handler name="SYSLOG"/>
<handler name="SERVER"/>
</handlers>
</root-logger>
all SYSLOG to org.ovirt
<logger category="org.ovirt" use-parent-handlers="false">
<level name="INFO"/>
<handlers>
<handler name="ENGINE"/>
<handler name="SYSLOG"/>
#if $getboolean('ENGINE_LOG_TO_CONSOLE')
<handler name="CONSOLE"/>
#end if
</handlers>
</logger>
Change-Id: Ia0dae8ffe53c3489af06d6684c72e6b431002404
Bug-Url: https://bugzilla.redhat.com/1078738
Signed-off-by: Ravi Nori <[email protected]>
---
M
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
A
backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/logger/builtin/SyslogLogger.java
M
backend/manager/modules/builtin-extensions/src/main/resources/META-INF/services/org.ovirt.engine.api.extensions.Extension
A
backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/logger/Logger.java
A backend/manager/modules/logger/pom.xml
A
backend/manager/modules/logger/src/java/org/ovirt/engine/core/logger/LoggerHandler.java
A
backend/manager/modules/logger/src/main/java/org/ovirt/engine/core/logger/LoggerHandler.java
A
backend/manager/modules/logger/src/main/modules/org/ovirt/engine/core/logger/main/module.xml
M backend/manager/modules/pom.xml
A logger/pom.xml
10 files changed, 431 insertions(+), 0 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/31/27431/1
diff --git
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
index 2e5e18e..6d2d514 100644
---
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
+++
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InitBackendServicesOnStartupBean.java
@@ -64,6 +64,7 @@
createInternalAAAConfigurations();
createKerberosLdapAAAConfigurations();
+ createInternalSysLogConfigurations();
ExtensionsManager.getInstance().dump();
AuthenticationProfileRepository.getInstance();
DbUserCacheManager.getInstance().init();
@@ -193,6 +194,18 @@
}
}
+ private void createInternalSysLogConfigurations() {
+ Properties syslogConfig = new Properties();
+ syslogConfig.put(Base.ConfigKeys.NAME, "builtin-syslog-logger");
+ syslogConfig.put(Base.ConfigKeys.PROVIDES,
org.ovirt.engine.api.extensions.logger.Logger.class.getName());
+ syslogConfig.put(Base.ConfigKeys.ENABLED, "true");
+ syslogConfig.put(Base.ConfigKeys.BINDINGS_METHOD,
Base.ConfigBindingsMethods.JBOSSMODULE);
+ syslogConfig.put(Base.ConfigKeys.BINDINGS_JBOSSMODULE_MODULE,
"org.ovirt.engine.extensions.builtin");
+ syslogConfig.put(Base.ConfigKeys.BINDINGS_JBOSSMODULE_CLASS,
+ "org.ovirt.engine.extensions.logger.builtin.SyslogLogger");
+ ExtensionsManager.getInstance().load(syslogConfig);
+ }
+
private String blankIfNull(String value) {
return value == null ? "" : value;
}
diff --git
a/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/logger/builtin/SyslogLogger.java
b/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/logger/builtin/SyslogLogger.java
new file mode 100644
index 0000000..3ee97d9
--- /dev/null
+++
b/backend/manager/modules/builtin-extensions/src/main/java/org/ovirt/engine/extensions/logger/builtin/SyslogLogger.java
@@ -0,0 +1,114 @@
+package org.ovirt.engine.extensions.logger.builtin;
+
+import org.apache.log4j.PatternLayout;
+import org.apache.log4j.net.SyslogAppender;
+import org.apache.log4j.spi.LoggingEvent;
+import org.ovirt.engine.api.extensions.Base;
+import org.ovirt.engine.api.extensions.ExtMap;
+import org.ovirt.engine.api.extensions.Extension;
+import org.ovirt.engine.api.extensions.logger.Logger;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+
+public class SyslogLogger implements Extension {
+
+ private ExtMap context;
+ private SyslogAppender logAppender;
+ private volatile boolean logHostSet = false;
+ private static final Map<Level, org.apache.log4j.Level> logLevelMap = new
HashMap<>();
+
+ static {
+ logLevelMap.put(Level.ALL, org.apache.log4j.Level.ALL);
+ logLevelMap.put(Level.CONFIG, org.apache.log4j.Level.INFO);
+ logLevelMap.put(Level.FINE, org.apache.log4j.Level.DEBUG);
+ logLevelMap.put(Level.FINER, org.apache.log4j.Level.TRACE);
+ logLevelMap.put(Level.FINEST, org.apache.log4j.Level.TRACE);
+ logLevelMap.put(Level.INFO, org.apache.log4j.Level.INFO);
+ logLevelMap.put(Level.OFF, org.apache.log4j.Level.OFF);
+ logLevelMap.put(Level.SEVERE, org.apache.log4j.Level.ERROR);
+ logLevelMap.put(Level.WARNING, org.apache.log4j.Level.WARN);
+ }
+
+ public SyslogLogger() {
+ logAppender = new SyslogAppender();
+ }
+
+ @Override
+ public void invoke(ExtMap input, ExtMap output) {
+ try {
+ if
(input.get(Base.InvokeKeys.COMMAND).equals(Base.InvokeCommands.INITIALIZE)) {
+ doInit(input, output);
+ } else if
(input.get(Base.InvokeKeys.COMMAND).equals(Logger.InvokeCommands.SET_PATTERN)) {
+ setPattern((String) input.get(Logger.InvokeKeys.PATTERN));
+ } else if
(input.get(Base.InvokeKeys.COMMAND).equals(Logger.InvokeCommands.PUBLISH)) {
+ publish((LogRecord) input.get(Logger.InvokeKeys.LOG_RECORD));
+ } else if
(input.get(Base.InvokeKeys.COMMAND).equals(Logger.InvokeCommands.SET_NAME)) {
+ setName((String) input.get(Logger.InvokeKeys.LOG_NAME));
+ } else if
(input.get(Base.InvokeKeys.COMMAND).equals(Logger.InvokeCommands.SET_SYS_LOG_HOST))
{
+ setSyslogHost((String)
input.get(Logger.InvokeKeys.SYS_LOG_HOST));
+ } else if
(input.get(Base.InvokeKeys.COMMAND).equals(Logger.InvokeCommands.CLOSE)) {
+ close();
+ } else {
+ output.put(Base.InvokeKeys.RESULT,
Base.InvokeResult.UNSUPPORTED);
+ }
+ output.putIfAbsent(Base.InvokeKeys.RESULT,
Base.InvokeResult.SUCCESS);
+ } catch (Exception ex) {
+ output.mput(Base.InvokeKeys.RESULT, Base.InvokeResult.FAILED).
+ mput(Base.InvokeKeys.MESSAGE, ex.getMessage());
+ }
+ }
+
+ private void doInit(ExtMap inputMap, ExtMap outputMap) {
+ context = inputMap.<ExtMap> get(Base.InvokeKeys.CONTEXT);
+ context.mput(
+ Base.ContextKeys.AUTHOR,
+ "The oVirt Project"
+ ).mput(
+ Base.ContextKeys.EXTENSION_NAME,
+ "Internal SyslogLogger (Built-in)"
+ ).mput(
+ Base.ContextKeys.LICENSE,
+ "ASL 2.0"
+ ).mput(
+ Base.ContextKeys.HOME_URL,
+ "http://www.ovirt.org"
+ ).mput(
+ Base.ContextKeys.VERSION,
+ "N/A"
+ ).mput(
+ Base.ContextKeys.BUILD_INTERFACE_VERSION,
+ Base.INTERFACE_VERSION_CURRENT);
+ }
+
+ private void setPattern(String pattern) {
+ PatternLayout patternLayout = new PatternLayout(pattern);
+ logAppender.setLayout(patternLayout);
+ }
+
+ public void publish(LogRecord record) {
+ if (logHostSet) {
+ logAppender.append(new LoggingEvent(record.getSourceClassName(),
+ org.apache.log4j.Logger.getLogger(record.getLoggerName()),
+ logLevelMap.get(record.getLevel()),
+ record.getMessage(),
+ record.getThrown()));
+ }
+ }
+
+ public void close() {
+ logAppender.close();
+ }
+
+ public void setName(String name) {
+ logAppender.setName(name);
+ }
+
+ public void setSyslogHost(String logHost) {
+ logAppender.setSyslogHost(logHost);
+ logHostSet = true;
+ }
+
+}
diff --git
a/backend/manager/modules/builtin-extensions/src/main/resources/META-INF/services/org.ovirt.engine.api.extensions.Extension
b/backend/manager/modules/builtin-extensions/src/main/resources/META-INF/services/org.ovirt.engine.api.extensions.Extension
index 0621446..7d1add6 100644
---
a/backend/manager/modules/builtin-extensions/src/main/resources/META-INF/services/org.ovirt.engine.api.extensions.Extension
+++
b/backend/manager/modules/builtin-extensions/src/main/resources/META-INF/services/org.ovirt.engine.api.extensions.Extension
@@ -2,3 +2,4 @@
org.ovirt.engine.extensions.aaa.builtin.internal.InternalAuthz
org.ovirt.engine.extensions.aaa.builtin.kerberosldap.KerberosLdapAuthz
org.ovirt.engine.extensions.aaa.builtin.kerberosldap.KerberosLdapAuthn
+org.ovirt.engine.extensions.logger.builtin.SyslogLogger
diff --git
a/backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/logger/Logger.java
b/backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/logger/Logger.java
new file mode 100644
index 0000000..5e9cad1
--- /dev/null
+++
b/backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/logger/Logger.java
@@ -0,0 +1,45 @@
+package org.ovirt.engine.api.extensions.logger;
+
+import org.ovirt.engine.api.extensions.ExtKey;
+import org.ovirt.engine.api.extensions.ExtUUID;
+
+import java.util.logging.LogRecord;
+
+public class Logger {
+ /**
+ * Invoke keys.
+ */
+ public static class InvokeKeys {
+ /** Log Record. */
+ public static final ExtKey PATTERN = new ExtKey("LOGGER_PATTERN",
String.class, "21fc7d4e-6d38-4896-91a1-c07a0dae1741");
+
+ /** Log Record. */
+ public static final ExtKey LOG_RECORD = new
ExtKey("LOGGER_LOG_RECORD", LogRecord.class,
"fb624b25-793d-4d83-8c31-2b257ec84438");
+
+ /** Name */
+ public static final ExtKey LOG_NAME = new ExtKey("LOGGER_LOG_NAME",
String.class, "798b24d8-a56c-46d7-aee3-93b512516b10");
+
+ /** SysLogHost */
+ public static final ExtKey SYS_LOG_HOST = new
ExtKey("LOGGER_SYS_LOG_HOST", String.class,
"dd0dfe63-1271-4524-906a-3195cad5d833");
+ }
+
+ /**
+ * Invoke commands.
+ */
+ public static class InvokeCommands {
+ /** Set Logger Pattern. */
+ public static final ExtUUID SET_PATTERN = new
ExtUUID("LOGGER_SET_PATTERN", "85103ca6-e960-4259-aa9b-1595615822b0");
+
+ /** Publish LogRecord. */
+ public static final ExtUUID PUBLISH = new ExtUUID("LOGGER_PUBLISH",
"b8b67211-c351-4219-b45e-b2f80a8975a9");
+
+ /** Set Name of Logger. */
+ public static final ExtUUID SET_NAME = new ExtUUID("LOGGER_SET_NAME",
"4fbd06a8-fde3-4849-a7fa-728cd7a99fd8");
+
+ /** Set SysLogHost. */
+ public static final ExtUUID SET_SYS_LOG_HOST = new
ExtUUID("LOGGER_SET_SYS_LOG_HOST", "9b4da943-f4f9-440f-af5e-a890aecd5f93");
+
+ /** Close the logger. */
+ public static final ExtUUID CLOSE = new ExtUUID("LOGGER_CLOSE",
"3b0036ca-1a34-4a69-b47a-5d02ce089a8a");
+ }
+}
diff --git a/backend/manager/modules/logger/pom.xml
b/backend/manager/modules/logger/pom.xml
new file mode 100644
index 0000000..667c6cb
--- /dev/null
+++ b/backend/manager/modules/logger/pom.xml
@@ -0,0 +1,65 @@
+<project
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.ovirt.engine.core</groupId>
+ <artifactId>manager-modules</artifactId>
+ <version>3.5.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>logger</artifactId>
+ <packaging>jar</packaging>
+
+ <name>Custom Logger Using Extensions</name>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>${engine.groupId}</groupId>
+ <artifactId>common</artifactId>
+ <version>${engine.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>${engine.groupId}</groupId>
+ <artifactId>extensions-manager</artifactId>
+ <version>${engine.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.ovirt.engine.api</groupId>
+ <artifactId>ovirt-engine-extensions-api</artifactId>
+
<version>${org.ovirt.engine.api.ovirt-engine-extensions-api.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.spec.javax.servlet</groupId>
+ <artifactId>jboss-servlet-api_3.0_spec</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+
+ <plugins>
+
+ <!-- Create the JBoss module: -->
+ <plugin>
+ <groupId>org.ovirt.engine</groupId>
+ <artifactId>jboss-modules-maven-plugin</artifactId>
+ </plugin>
+
+ </plugins>
+
+ </build>
+
+</project>
diff --git
a/backend/manager/modules/logger/src/java/org/ovirt/engine/core/logger/LoggerHandler.java
b/backend/manager/modules/logger/src/java/org/ovirt/engine/core/logger/LoggerHandler.java
new file mode 100644
index 0000000..81e5849
--- /dev/null
+++
b/backend/manager/modules/logger/src/java/org/ovirt/engine/core/logger/LoggerHandler.java
@@ -0,0 +1,80 @@
+package org.ovirt.engine.core.logger;
+
+
+import org.apache.log4j.PatternLayout;
+import org.apache.log4j.Priority;
+import org.apache.log4j.net.SyslogAppender;
+import org.apache.log4j.spi.LoggingEvent;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Handler;
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+
+public class LoggerHandler extends Handler {
+
+ private SyslogAppender syslogAppender;
+ private static final Map<java.util.logging.Level, org.apache.log4j.Level>
levelMap = new HashMap<>();
+
+ static {
+
+ levelMap.put(Level.OFF, org.apache.log4j.Level.OFF);
+ levelMap.put(Level.SEVERE, org.apache.log4j.Level.ERROR);
+ levelMap.put(Level.WARNING, org.apache.log4j.Level.WARN);
+ levelMap.put(Level.INFO, org.apache.log4j.Level.INFO);
+ levelMap.put(Level.CONFIG, org.apache.log4j.Level.INFO);
+ levelMap.put(Level.FINE, org.apache.log4j.Level.DEBUG);
+ levelMap.put(Level.FINER, org.apache.log4j.Level.TRACE);
+ levelMap.put(Level.FINEST, org.apache.log4j.Level.TRACE);
+ levelMap.put(Level.ALL, org.apache.log4j.Level.ALL);
+
+ }
+
+ public LoggerHandler() {
+ syslogAppender = new SyslogAppender();
+ PatternLayout patternLayout = new PatternLayout("WFA [%c] %m%n");
+ syslogAppender.setLayout(patternLayout);
+ }
+
+ @Override
+ public void publish(LogRecord record) {
+
+ syslogAppender.append(new LoggingEvent(record.getSourceClassName(),
+ org.apache.log4j.Logger.getLogger(record.getLoggerName()),
+ levelMap.get(record.getLevel()),
+ record.getMessage(),
+ record.getThrown()));
+
+ }
+
+ @Override
+ public void flush() {
+ }
+
+ @Override
+ public void close() throws SecurityException {
+ syslogAppender.close();
+ }
+
+ public void setName(String name) {
+ this.syslogAppender.setName(name);
+ }
+
+ public void setSyslogHost(String logHost) {
+ this.syslogAppender.setSyslogHost(logHost);
+ }
+
+ public void setThreshold(Priority threshold) {
+ this.syslogAppender.setThreshold(threshold);
+ }
+
+ public static SyslogHandler getFromLogger(LoggerHandler logger) {
+ for (Handler handler : logger.getHandlers()) {
+ if (handler instanceof SyslogHandler) {
+ return (SyslogHandler)handler;
+ }
+ }
+ return null;
+ }
+}
diff --git
a/backend/manager/modules/logger/src/main/java/org/ovirt/engine/core/logger/LoggerHandler.java
b/backend/manager/modules/logger/src/main/java/org/ovirt/engine/core/logger/LoggerHandler.java
new file mode 100644
index 0000000..339012d
--- /dev/null
+++
b/backend/manager/modules/logger/src/main/java/org/ovirt/engine/core/logger/LoggerHandler.java
@@ -0,0 +1,78 @@
+package org.ovirt.engine.core.logger;
+
+
+import org.ovirt.engine.api.extensions.Base;
+import org.ovirt.engine.api.extensions.ExtMap;
+import org.ovirt.engine.api.extensions.logger.Logger;
+import org.ovirt.engine.core.extensions.mgr.ExtensionProxy;
+import org.ovirt.engine.core.extensions.mgr.ExtensionsManager;
+
+import java.util.logging.Handler;
+import java.util.logging.LogRecord;
+
+public class LoggerHandler extends Handler {
+
+ private ExtensionProxy extension;
+ private String loggerExtensionName = "builtin-syslog-logger";
+
+ public LoggerHandler() {}
+
+ @Override
+ public void publish(LogRecord record) {
+ if (getExtension() != null) {
+ extension.invoke(new ExtMap()
+ .mput(Base.InvokeKeys.COMMAND, Logger.InvokeCommands.PUBLISH)
+ .mput(Logger.InvokeKeys.LOG_RECORD, record));
+ }
+ }
+
+ @Override
+ public void flush() {
+ }
+
+ @Override
+ public void close() throws SecurityException {
+ if (getExtension() != null) {
+ extension.invoke(new ExtMap()
+ .mput(Base.InvokeKeys.COMMAND, Logger.InvokeCommands.CLOSE));
+ }
+ }
+
+ public void setPattern(String pattern) {
+ if (getExtension() != null) {
+ extension.invoke(new ExtMap()
+ .mput(Base.InvokeKeys.COMMAND,
Logger.InvokeCommands.SET_PATTERN)
+ .mput(Logger.InvokeKeys.PATTERN, pattern));
+ }
+ }
+
+ public void setName(String name) {
+ if (getExtension() != null) {
+ extension.invoke(new ExtMap()
+ .mput(Base.InvokeKeys.COMMAND,
Logger.InvokeCommands.SET_NAME)
+ .mput(Logger.InvokeKeys.LOG_NAME, name));
+ }
+ }
+
+ public void setSyslogHost(String logHost) {
+ if (getExtension() != null) {
+ extension.invoke(new ExtMap()
+ .mput(Base.InvokeKeys.COMMAND,
Logger.InvokeCommands.SET_SYS_LOG_HOST)
+ .mput(Logger.InvokeKeys.SYS_LOG_HOST, logHost));
+ }
+
+ }
+
+ public void setLoggerExtensionName(String name) {
+ loggerExtensionName = name;
+ extension = null;
+ }
+
+ private ExtensionProxy getExtension() {
+ if (extension == null) {
+ extension =
ExtensionsManager.getInstance().getExtensionByName(loggerExtensionName);
+ }
+ return extension;
+ }
+
+}
diff --git
a/backend/manager/modules/logger/src/main/modules/org/ovirt/engine/core/logger/main/module.xml
b/backend/manager/modules/logger/src/main/modules/org/ovirt/engine/core/logger/main/module.xml
new file mode 100644
index 0000000..cade316
--- /dev/null
+++
b/backend/manager/modules/logger/src/main/modules/org/ovirt/engine/core/logger/main/module.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<module xmlns="urn:jboss:module:1.1" name="org.ovirt.engine.core.logger">
+
+ <resources>
+ <resource-root path="logger.jar"/>
+ </resources>
+
+ <dependencies>
+ <module name="org.apache.commons.collections"/>
+ <module name="org.apache.commons.configuration"/>
+ <module name="org.apache.commons.lang"/>
+ <module name="org.apache.commons.logging"/>
+ <module name="org.apache.log4j"/>
+ <module name="org.ovirt.engine.core.extensions-manager"/>
+ <module name="org.ovirt.engine.api.ovirt-engine-extensions-api"/>
+ </dependencies>
+
+</module>
diff --git a/backend/manager/modules/pom.xml b/backend/manager/modules/pom.xml
index d4938c8..fc5998c 100644
--- a/backend/manager/modules/pom.xml
+++ b/backend/manager/modules/pom.xml
@@ -29,6 +29,7 @@
<module>extensions-manager</module>
<module>bll</module>
<module>restapi</module>
+ <module>logger</module>
<module>root</module>
<module>branding</module>
<module>services</module>
diff --git a/logger/pom.xml b/logger/pom.xml
new file mode 100644
index 0000000..d5e57c1
--- /dev/null
+++ b/logger/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>root</artifactId>
+ <groupId>org.ovirt.engine</groupId>
+ <version>3.5.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>logger</artifactId>
+
+
+</project>
\ No newline at end of file
--
To view, visit http://gerrit.ovirt.org/27431
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia0dae8ffe53c3489af06d6684c72e6b431002404
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Ravi Nori <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches