Repository: incubator-ignite Updated Branches: refs/heads/ignite-240 [created] 6bdb192a9
# ignite-240 Fixed missing links in Javadoc. Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/6bdb192a Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/6bdb192a Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/6bdb192a Branch: refs/heads/ignite-240 Commit: 6bdb192a903c46de5cf900b57373932d8b16c949 Parents: 43a7391 Author: anovikov <anovi...@gridgain.com> Authored: Fri Feb 13 13:06:19 2015 +0700 Committer: anovikov <anovi...@gridgain.com> Committed: Fri Feb 13 13:06:19 2015 +0700 ---------------------------------------------------------------------- config/ignite-log4j.xml | 2 +- .../configuration/IgniteConfiguration.java | 2 +- .../optimized/optimized-classnames.properties | 2 +- .../discovery/tcp/TcpDiscoverySpiAdapter.java | 2 +- .../IgniteLog4jDailyRollingFileAppender.java | 77 ------------- ...IgniteLog4jExternallyRolledFileAppender.java | 63 ----------- .../logger/log4j/IgniteLog4jFileAppender.java | 107 ------------------- .../logger/log4j/IgniteLog4jFileAware.java | 32 ------ .../logger/log4j/IgniteLog4jNodeIdFilePath.java | 64 ----------- .../log4j/IgniteLog4jRollingFileAppender.java | 90 ---------------- .../log4j/Log4JDailyRollingFileAppender.java | 77 +++++++++++++ .../Log4JExternallyRolledFileAppender.java | 63 +++++++++++ .../ignite/logger/log4j/Log4JFileAppender.java | 107 +++++++++++++++++++ .../apache/ignite/logger/log4j/Log4JLogger.java | 9 +- .../ignite/logger/log4j/Log4jFileAware.java | 32 ++++++ .../logger/log4j/Log4jNodeIdFilePath.java | 64 +++++++++++ .../logger/log4j/Log4jRollingFileAppender.java | 90 ++++++++++++++++ .../log4j/GridLog4jCorrectFileNameTest.java | 12 +-- 18 files changed, 447 insertions(+), 448 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6bdb192a/config/ignite-log4j.xml ---------------------------------------------------------------------- diff --git a/config/ignite-log4j.xml b/config/ignite-log4j.xml index 292e91f..20b4a4e 100644 --- a/config/ignite-log4j.xml +++ b/config/ignite-log4j.xml @@ -67,7 +67,7 @@ Logs all output to specified file. By default, the logging goes to IGNITE_HOME/work/log folder --> - <appender name="FILE" class="org.apache.ignite.logger.log4j.IgniteLog4jFileAppender"> + <appender name="FILE" class="org.apache.ignite.logger.log4j.Log4JFileAppender"> <param name="Threshold" value="DEBUG"/> <param name="File" value="${IGNITE_HOME}/work/log/ignite.log"/> <param name="Append" value="true"/> http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6bdb192a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java index 95e0a0f..c7a200a 100644 --- a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java +++ b/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java @@ -922,7 +922,7 @@ public class IgniteConfiguration { /** * Should return an instance of logger to use in grid. If not provided, - * {@ignitelink org.apache.ignite.logger.log4j.IgniteLog4jLogger} + * {@ignitelink org.apache.ignite.logger.log4j.Log4jLogger} * will be used. * * @return Logger to use in grid. http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6bdb192a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/optimized-classnames.properties ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/optimized-classnames.properties b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/optimized-classnames.properties index 4ff4f55..2e48000 100644 --- a/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/optimized-classnames.properties +++ b/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/optimized-classnames.properties @@ -1519,7 +1519,7 @@ org.apache.ignite.lang.IgniteFutureTimeoutException org.apache.ignite.lang.IgniteProductVersion org.apache.ignite.lang.IgniteUuid org.apache.ignite.lifecycle.LifecycleEventType -org.apache.ignite.logger.log4j.IgniteLog4jNodeIdFilePath +org.apache.ignite.logger.log4j.Log4jNodeIdFilePath org.apache.ignite.logger.log4j.Log4JLogger$1 org.apache.ignite.logger.log4j.Log4JLogger$2 org.apache.ignite.logger.log4j.Log4JLogger$3 http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6bdb192a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiAdapter.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiAdapter.java index 159b277..3a59f82 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiAdapter.java @@ -848,7 +848,7 @@ abstract class TcpDiscoverySpiAdapter extends IgniteSpiAdapter implements Discov /** * Socket timeout object. */ - protected static class SocketTimeoutObject { + private static class SocketTimeoutObject { /** */ private static final AtomicLong idGen = new AtomicLong(); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6bdb192a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/IgniteLog4jDailyRollingFileAppender.java ---------------------------------------------------------------------- diff --git a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/IgniteLog4jDailyRollingFileAppender.java b/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/IgniteLog4jDailyRollingFileAppender.java deleted file mode 100644 index eb9bee6..0000000 --- a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/IgniteLog4jDailyRollingFileAppender.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.logger.log4j; - -import org.apache.ignite.internal.util.typedef.internal.*; -import org.apache.ignite.lang.*; -import org.apache.log4j.*; - -import java.io.*; - -/** - * Log4J {@link DailyRollingFileAppender} with added support for grid node IDs. - */ -public class IgniteLog4jDailyRollingFileAppender extends DailyRollingFileAppender implements IgniteLog4jFileAware { - /** Basic log file name. */ - private String baseFileName; - - /** - * Default constructor (does not do anything). - */ - public IgniteLog4jDailyRollingFileAppender() { - init(); - } - - /** - * Instantiate a FileAppender with given parameters. - * - * @param layout Layout. - * @param filename File name. - * @param datePtrn Date pattern. - * @throws IOException If failed. - */ - public IgniteLog4jDailyRollingFileAppender(Layout layout, String filename, String datePtrn) throws IOException { - super(layout, filename, datePtrn); - - init(); - } - - /** - * - */ - private void init() { - Log4JLogger.addAppender(this); - } - - /** {@inheritDoc} */ - @Override public synchronized void updateFilePath(IgniteClosure<String, String> filePathClos) { - A.notNull(filePathClos, "filePathClos"); - - if (baseFileName == null) - baseFileName = fileName; - - fileName = filePathClos.apply(baseFileName); - } - - /** {@inheritDoc} */ - @Override public synchronized void setFile(String fileName, boolean fileAppend, boolean bufIO, int bufSize) - throws IOException { - if (baseFileName != null) - super.setFile(fileName, fileAppend, bufIO, bufSize); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6bdb192a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/IgniteLog4jExternallyRolledFileAppender.java ---------------------------------------------------------------------- diff --git a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/IgniteLog4jExternallyRolledFileAppender.java b/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/IgniteLog4jExternallyRolledFileAppender.java deleted file mode 100644 index 39dc0f9..0000000 --- a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/IgniteLog4jExternallyRolledFileAppender.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.logger.log4j; - -import org.apache.ignite.internal.util.typedef.internal.*; -import org.apache.ignite.lang.*; -import org.apache.log4j.varia.*; - -import java.io.*; - -/** - * Log4J {@link ExternallyRolledFileAppender} with added support for grid node IDs. - */ -public class IgniteLog4jExternallyRolledFileAppender extends ExternallyRolledFileAppender implements IgniteLog4jFileAware { - /** Basic log file name. */ - private String baseFileName; - - /** - * Default constructor (does not do anything). - */ - public IgniteLog4jExternallyRolledFileAppender() { - init(); - } - - /** - * - */ - private void init() { - Log4JLogger.addAppender(this); - } - - /** {@inheritDoc} */ - @Override public synchronized void updateFilePath(IgniteClosure<String, String> filePathClos) { - A.notNull(filePathClos, "filePathClos"); - - if (baseFileName == null) - baseFileName = fileName; - - fileName = filePathClos.apply(baseFileName); - } - - /** {@inheritDoc} */ - @Override public synchronized void setFile(String fileName, boolean fileAppend, boolean bufIO, int bufSize) - throws IOException { - if (baseFileName != null) - super.setFile(fileName, fileAppend, bufIO, bufSize); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6bdb192a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/IgniteLog4jFileAppender.java ---------------------------------------------------------------------- diff --git a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/IgniteLog4jFileAppender.java b/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/IgniteLog4jFileAppender.java deleted file mode 100644 index ea39024..0000000 --- a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/IgniteLog4jFileAppender.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.logger.log4j; - -import org.apache.ignite.internal.util.typedef.internal.*; -import org.apache.ignite.lang.*; -import org.apache.log4j.*; - -import java.io.*; - -/** - * Log4J {@link FileAppender} with added support for grid node IDs. - */ -public class IgniteLog4jFileAppender extends FileAppender implements IgniteLog4jFileAware { - /** Basic log file name. */ - private String baseFileName; - - /** - * Default constructor (does not do anything). - */ - public IgniteLog4jFileAppender() { - init(); - } - - /** - * Instantiate a FileAppender with given parameters. - * - * @param layout Layout. - * @param filename File name. - * @throws IOException If failed. - */ - public IgniteLog4jFileAppender(Layout layout, String filename) throws IOException { - super(layout, filename); - - init(); - } - - /** - * Instantiate a FileAppender with given parameters. - * - * @param layout Layout. - * @param filename File name. - * @param append Append flag. - * @throws IOException If failed. - */ - public IgniteLog4jFileAppender(Layout layout, String filename, boolean append) throws IOException { - super(layout, filename, append); - - init(); - } - - /** - * Instantiate a FileAppender with given parameters. - * - * @param layout Layout. - * @param filename File name. - * @param append Append flag. - * @param bufIO Buffered IO flag. - * @param bufSize Buffer size. - * @throws IOException If failed. - */ - public IgniteLog4jFileAppender(Layout layout, String filename, boolean append, boolean bufIO, int bufSize) - throws IOException { - super(layout, filename, append, bufIO, bufSize); - - init(); - } - - /** - * - */ - private void init() { - Log4JLogger.addAppender(this); - } - - /** {@inheritDoc} */ - @Override public synchronized void setFile(String fileName, boolean fileAppend, boolean bufIO, int bufSize) - throws IOException { - if (baseFileName != null) - super.setFile(fileName, fileAppend, bufIO, bufSize); - } - - /** {@inheritDoc} */ - @Override public synchronized void updateFilePath(IgniteClosure<String, String> filePathClos) { - A.notNull(filePathClos, "filePathClos"); - - if (baseFileName == null) - baseFileName = fileName; - - fileName = filePathClos.apply(baseFileName); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6bdb192a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/IgniteLog4jFileAware.java ---------------------------------------------------------------------- diff --git a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/IgniteLog4jFileAware.java b/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/IgniteLog4jFileAware.java deleted file mode 100644 index 1aebb86..0000000 --- a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/IgniteLog4jFileAware.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.logger.log4j; - -import org.apache.ignite.lang.*; - -/** - * Interface for those loggers and appenders that evaluate their file paths lazily. - */ -interface IgniteLog4jFileAware { - /** - * Sets closure that later evaluate file path. - * - * @param filePathClos Closure that generates actual file path. - */ - void updateFilePath(IgniteClosure<String, String> filePathClos); -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6bdb192a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/IgniteLog4jNodeIdFilePath.java ---------------------------------------------------------------------- diff --git a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/IgniteLog4jNodeIdFilePath.java b/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/IgniteLog4jNodeIdFilePath.java deleted file mode 100644 index 0ea6878..0000000 --- a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/IgniteLog4jNodeIdFilePath.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.logger.log4j; - -import org.apache.ignite.*; -import org.apache.ignite.internal.util.typedef.*; -import org.apache.ignite.internal.util.typedef.internal.*; -import org.apache.ignite.lang.*; - -import java.io.*; -import java.util.*; - -/** - * Closure that generates file path adding node id to filename as a suffix. - */ -class IgniteLog4jNodeIdFilePath implements IgniteClosure<String, String> { - /** */ - private static final long serialVersionUID = 0L; - - /** Node id. */ - private final UUID nodeId; - - /** - * Creates new instance. - * - * @param id Node id. - */ - IgniteLog4jNodeIdFilePath(UUID id) { - nodeId = id; - } - - /** {@inheritDoc} */ - @Override public String apply(String oldPath) { - if (!F.isEmpty(U.IGNITE_LOG_DIR)) - return U.nodeIdLogFileName(nodeId, new File(U.IGNITE_LOG_DIR, "ignite.log").getAbsolutePath()); - - if (oldPath != null) // fileName could be null if IGNITE_HOME is not defined. - return U.nodeIdLogFileName(nodeId, oldPath); - - String tmpDir = IgniteSystemProperties.getString("java.io.tmpdir"); - - if (tmpDir != null) - return U.nodeIdLogFileName(nodeId, new File(tmpDir, "ignite.log").getAbsolutePath()); - - System.err.println("Failed to get tmp directory for log file."); - - return null; - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6bdb192a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/IgniteLog4jRollingFileAppender.java ---------------------------------------------------------------------- diff --git a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/IgniteLog4jRollingFileAppender.java b/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/IgniteLog4jRollingFileAppender.java deleted file mode 100644 index 3ccda1a..0000000 --- a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/IgniteLog4jRollingFileAppender.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.logger.log4j; - -import org.apache.ignite.internal.util.typedef.internal.*; -import org.apache.ignite.lang.*; -import org.apache.log4j.*; - -import java.io.*; - -/** - * Log4J {@link RollingFileAppender} with added support for grid node IDs. - */ -public class IgniteLog4jRollingFileAppender extends RollingFileAppender implements IgniteLog4jFileAware { - /** Basic log file name. */ - private String baseFileName; - - /** - * Default constructor (does not do anything). - */ - public IgniteLog4jRollingFileAppender() { - init(); - } - - /** - * Instantiate a FileAppender with given parameters. - * - * @param layout Layout. - * @param filename File name. - * @throws IOException If failed. - */ - public IgniteLog4jRollingFileAppender(Layout layout, String filename) throws IOException { - super(layout, filename); - - init(); - } - - /** - * Instantiate a FileAppender with given parameters. - * - * @param layout Layout. - * @param filename File name. - * @param append Append flag. - * @throws IOException If failed. - */ - public IgniteLog4jRollingFileAppender(Layout layout, String filename, boolean append) throws IOException { - super(layout, filename, append); - - init(); - } - - /** - * Initializes appender. - */ - private void init() { - Log4JLogger.addAppender(this); - } - - /** {@inheritDoc} */ - @Override public synchronized void updateFilePath(IgniteClosure<String, String> filePathClos) { - A.notNull(filePathClos, "filePathClos"); - - if (baseFileName == null) - baseFileName = fileName; - - fileName = filePathClos.apply(baseFileName); - } - - /** {@inheritDoc} */ - @Override public synchronized void setFile(String fileName, boolean fileAppend, boolean bufIO, int bufSize) - throws IOException { - if (baseFileName != null) - super.setFile(fileName, fileAppend, bufIO, bufSize); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6bdb192a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4JDailyRollingFileAppender.java ---------------------------------------------------------------------- diff --git a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4JDailyRollingFileAppender.java b/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4JDailyRollingFileAppender.java new file mode 100644 index 0000000..c9053c6 --- /dev/null +++ b/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4JDailyRollingFileAppender.java @@ -0,0 +1,77 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ignite.logger.log4j; + +import org.apache.ignite.internal.util.typedef.internal.*; +import org.apache.ignite.lang.*; +import org.apache.log4j.*; + +import java.io.*; + +/** + * Log4J {@link DailyRollingFileAppender} with added support for grid node IDs. + */ +public class Log4JDailyRollingFileAppender extends DailyRollingFileAppender implements Log4jFileAware { + /** Basic log file name. */ + private String baseFileName; + + /** + * Default constructor (does not do anything). + */ + public Log4JDailyRollingFileAppender() { + init(); + } + + /** + * Instantiate a FileAppender with given parameters. + * + * @param layout Layout. + * @param filename File name. + * @param datePtrn Date pattern. + * @throws IOException If failed. + */ + public Log4JDailyRollingFileAppender(Layout layout, String filename, String datePtrn) throws IOException { + super(layout, filename, datePtrn); + + init(); + } + + /** + * + */ + private void init() { + Log4JLogger.addAppender(this); + } + + /** {@inheritDoc} */ + @Override public synchronized void updateFilePath(IgniteClosure<String, String> filePathClos) { + A.notNull(filePathClos, "filePathClos"); + + if (baseFileName == null) + baseFileName = fileName; + + fileName = filePathClos.apply(baseFileName); + } + + /** {@inheritDoc} */ + @Override public synchronized void setFile(String fileName, boolean fileAppend, boolean bufIO, int bufSize) + throws IOException { + if (baseFileName != null) + super.setFile(fileName, fileAppend, bufIO, bufSize); + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6bdb192a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4JExternallyRolledFileAppender.java ---------------------------------------------------------------------- diff --git a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4JExternallyRolledFileAppender.java b/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4JExternallyRolledFileAppender.java new file mode 100644 index 0000000..42d6378 --- /dev/null +++ b/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4JExternallyRolledFileAppender.java @@ -0,0 +1,63 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ignite.logger.log4j; + +import org.apache.ignite.internal.util.typedef.internal.*; +import org.apache.ignite.lang.*; +import org.apache.log4j.varia.*; + +import java.io.*; + +/** + * Log4J {@link ExternallyRolledFileAppender} with added support for grid node IDs. + */ +public class Log4JExternallyRolledFileAppender extends ExternallyRolledFileAppender implements Log4jFileAware { + /** Basic log file name. */ + private String baseFileName; + + /** + * Default constructor (does not do anything). + */ + public Log4JExternallyRolledFileAppender() { + init(); + } + + /** + * + */ + private void init() { + Log4JLogger.addAppender(this); + } + + /** {@inheritDoc} */ + @Override public synchronized void updateFilePath(IgniteClosure<String, String> filePathClos) { + A.notNull(filePathClos, "filePathClos"); + + if (baseFileName == null) + baseFileName = fileName; + + fileName = filePathClos.apply(baseFileName); + } + + /** {@inheritDoc} */ + @Override public synchronized void setFile(String fileName, boolean fileAppend, boolean bufIO, int bufSize) + throws IOException { + if (baseFileName != null) + super.setFile(fileName, fileAppend, bufIO, bufSize); + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6bdb192a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4JFileAppender.java ---------------------------------------------------------------------- diff --git a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4JFileAppender.java b/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4JFileAppender.java new file mode 100644 index 0000000..f628f82 --- /dev/null +++ b/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4JFileAppender.java @@ -0,0 +1,107 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ignite.logger.log4j; + +import org.apache.ignite.internal.util.typedef.internal.*; +import org.apache.ignite.lang.*; +import org.apache.log4j.*; + +import java.io.*; + +/** + * Log4J {@link FileAppender} with added support for grid node IDs. + */ +public class Log4JFileAppender extends FileAppender implements Log4jFileAware { + /** Basic log file name. */ + private String baseFileName; + + /** + * Default constructor (does not do anything). + */ + public Log4JFileAppender() { + init(); + } + + /** + * Instantiate a FileAppender with given parameters. + * + * @param layout Layout. + * @param filename File name. + * @throws IOException If failed. + */ + public Log4JFileAppender(Layout layout, String filename) throws IOException { + super(layout, filename); + + init(); + } + + /** + * Instantiate a FileAppender with given parameters. + * + * @param layout Layout. + * @param filename File name. + * @param append Append flag. + * @throws IOException If failed. + */ + public Log4JFileAppender(Layout layout, String filename, boolean append) throws IOException { + super(layout, filename, append); + + init(); + } + + /** + * Instantiate a FileAppender with given parameters. + * + * @param layout Layout. + * @param filename File name. + * @param append Append flag. + * @param bufIO Buffered IO flag. + * @param bufSize Buffer size. + * @throws IOException If failed. + */ + public Log4JFileAppender(Layout layout, String filename, boolean append, boolean bufIO, int bufSize) + throws IOException { + super(layout, filename, append, bufIO, bufSize); + + init(); + } + + /** + * + */ + private void init() { + Log4JLogger.addAppender(this); + } + + /** {@inheritDoc} */ + @Override public synchronized void setFile(String fileName, boolean fileAppend, boolean bufIO, int bufSize) + throws IOException { + if (baseFileName != null) + super.setFile(fileName, fileAppend, bufIO, bufSize); + } + + /** {@inheritDoc} */ + @Override public synchronized void updateFilePath(IgniteClosure<String, String> filePathClos) { + A.notNull(filePathClos, "filePathClos"); + + if (baseFileName == null) + baseFileName = fileName; + + fileName = filePathClos.apply(baseFileName); + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6bdb192a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4JLogger.java ---------------------------------------------------------------------- diff --git a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4JLogger.java b/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4JLogger.java index 561acd4..611884f 100644 --- a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4JLogger.java +++ b/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4JLogger.java @@ -64,8 +64,7 @@ import static org.apache.ignite.IgniteSystemProperties.*; * logger in your task/job code. See {@link org.apache.ignite.resources.LoggerResource} annotation about logger * injection. */ -public class Log4JLogger implements IgniteLogger, LoggerNodeIdAware, - IgniteLog4jFileAware { +public class Log4JLogger implements IgniteLogger, LoggerNodeIdAware, Log4jFileAware { /** */ private static final long serialVersionUID = 0L; @@ -401,7 +400,7 @@ public class Log4JLogger implements IgniteLogger, LoggerNodeIdAware, this.nodeId = nodeId; - updateFilePath(new IgniteLog4jNodeIdFilePath(nodeId)); + updateFilePath(new Log4jNodeIdFilePath(nodeId)); } /** {@inheritDoc} */ @@ -512,8 +511,8 @@ public class Log4JLogger implements IgniteLogger, LoggerNodeIdAware, A.notNull(filePathClos, "filePathClos"); for (FileAppender a : fileAppenders) { - if (a instanceof IgniteLog4jFileAware) { - ((IgniteLog4jFileAware)a).updateFilePath(filePathClos); + if (a instanceof Log4jFileAware) { + ((Log4jFileAware)a).updateFilePath(filePathClos); a.activateOptions(); } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6bdb192a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4jFileAware.java ---------------------------------------------------------------------- diff --git a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4jFileAware.java b/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4jFileAware.java new file mode 100644 index 0000000..4f2a668 --- /dev/null +++ b/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4jFileAware.java @@ -0,0 +1,32 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ignite.logger.log4j; + +import org.apache.ignite.lang.*; + +/** + * Interface for those loggers and appenders that evaluate their file paths lazily. + */ +interface Log4jFileAware { + /** + * Sets closure that later evaluate file path. + * + * @param filePathClos Closure that generates actual file path. + */ + void updateFilePath(IgniteClosure<String, String> filePathClos); +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6bdb192a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4jNodeIdFilePath.java ---------------------------------------------------------------------- diff --git a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4jNodeIdFilePath.java b/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4jNodeIdFilePath.java new file mode 100644 index 0000000..8c4b98b --- /dev/null +++ b/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4jNodeIdFilePath.java @@ -0,0 +1,64 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ignite.logger.log4j; + +import org.apache.ignite.*; +import org.apache.ignite.internal.util.typedef.*; +import org.apache.ignite.internal.util.typedef.internal.*; +import org.apache.ignite.lang.*; + +import java.io.*; +import java.util.*; + +/** + * Closure that generates file path adding node id to filename as a suffix. + */ +class Log4jNodeIdFilePath implements IgniteClosure<String, String> { + /** */ + private static final long serialVersionUID = 0L; + + /** Node id. */ + private final UUID nodeId; + + /** + * Creates new instance. + * + * @param id Node id. + */ + Log4jNodeIdFilePath(UUID id) { + nodeId = id; + } + + /** {@inheritDoc} */ + @Override public String apply(String oldPath) { + if (!F.isEmpty(U.IGNITE_LOG_DIR)) + return U.nodeIdLogFileName(nodeId, new File(U.IGNITE_LOG_DIR, "ignite.log").getAbsolutePath()); + + if (oldPath != null) // fileName could be null if IGNITE_HOME is not defined. + return U.nodeIdLogFileName(nodeId, oldPath); + + String tmpDir = IgniteSystemProperties.getString("java.io.tmpdir"); + + if (tmpDir != null) + return U.nodeIdLogFileName(nodeId, new File(tmpDir, "ignite.log").getAbsolutePath()); + + System.err.println("Failed to get tmp directory for log file."); + + return null; + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6bdb192a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4jRollingFileAppender.java ---------------------------------------------------------------------- diff --git a/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4jRollingFileAppender.java b/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4jRollingFileAppender.java new file mode 100644 index 0000000..dcf03a4 --- /dev/null +++ b/modules/log4j/src/main/java/org/apache/ignite/logger/log4j/Log4jRollingFileAppender.java @@ -0,0 +1,90 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ignite.logger.log4j; + +import org.apache.ignite.internal.util.typedef.internal.*; +import org.apache.ignite.lang.*; +import org.apache.log4j.*; + +import java.io.*; + +/** + * Log4J {@link RollingFileAppender} with added support for grid node IDs. + */ +public class Log4jRollingFileAppender extends RollingFileAppender implements Log4jFileAware { + /** Basic log file name. */ + private String baseFileName; + + /** + * Default constructor (does not do anything). + */ + public Log4jRollingFileAppender() { + init(); + } + + /** + * Instantiate a FileAppender with given parameters. + * + * @param layout Layout. + * @param filename File name. + * @throws IOException If failed. + */ + public Log4jRollingFileAppender(Layout layout, String filename) throws IOException { + super(layout, filename); + + init(); + } + + /** + * Instantiate a FileAppender with given parameters. + * + * @param layout Layout. + * @param filename File name. + * @param append Append flag. + * @throws IOException If failed. + */ + public Log4jRollingFileAppender(Layout layout, String filename, boolean append) throws IOException { + super(layout, filename, append); + + init(); + } + + /** + * Initializes appender. + */ + private void init() { + Log4JLogger.addAppender(this); + } + + /** {@inheritDoc} */ + @Override public synchronized void updateFilePath(IgniteClosure<String, String> filePathClos) { + A.notNull(filePathClos, "filePathClos"); + + if (baseFileName == null) + baseFileName = fileName; + + fileName = filePathClos.apply(baseFileName); + } + + /** {@inheritDoc} */ + @Override public synchronized void setFile(String fileName, boolean fileAppend, boolean bufIO, int bufSize) + throws IOException { + if (baseFileName != null) + super.setFile(fileName, fileAppend, bufIO, bufSize); + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6bdb192a/modules/log4j/src/test/java/org/apache/ignite/logger/log4j/GridLog4jCorrectFileNameTest.java ---------------------------------------------------------------------- diff --git a/modules/log4j/src/test/java/org/apache/ignite/logger/log4j/GridLog4jCorrectFileNameTest.java b/modules/log4j/src/test/java/org/apache/ignite/logger/log4j/GridLog4jCorrectFileNameTest.java index 3676f4e..0aef8f6 100644 --- a/modules/log4j/src/test/java/org/apache/ignite/logger/log4j/GridLog4jCorrectFileNameTest.java +++ b/modules/log4j/src/test/java/org/apache/ignite/logger/log4j/GridLog4jCorrectFileNameTest.java @@ -35,14 +35,14 @@ import java.util.*; @GridCommonTest(group = "Logger") public class GridLog4jCorrectFileNameTest extends TestCase { /** Appender */ - private IgniteLog4jRollingFileAppender appender; + private Log4jRollingFileAppender appender; /** {@inheritDoc} */ @Override protected void setUp() throws Exception { Logger root = Logger.getRootLogger(); for (Enumeration appenders = root.getAllAppenders(); appenders.hasMoreElements(); ) { - if (appenders.nextElement() instanceof IgniteLog4jRollingFileAppender) + if (appenders.nextElement() instanceof Log4jRollingFileAppender) return; } @@ -54,7 +54,7 @@ public class GridLog4jCorrectFileNameTest extends TestCase { /** {@inheritDoc} */ @Override public void tearDown() { if (appender != null) { - Logger.getRootLogger().removeAppender(IgniteLog4jRollingFileAppender.class.getSimpleName()); + Logger.getRootLogger().removeAppender(Log4jRollingFileAppender.class.getSimpleName()); Log4JLogger.removeAppender(appender); } @@ -116,12 +116,12 @@ public class GridLog4jCorrectFileNameTest extends TestCase { * @return GridLog4jRollingFileAppender. * @throws Exception If error occurred. */ - private static IgniteLog4jRollingFileAppender createAppender() throws Exception { - IgniteLog4jRollingFileAppender appender = new IgniteLog4jRollingFileAppender(); + private static Log4jRollingFileAppender createAppender() throws Exception { + Log4jRollingFileAppender appender = new Log4jRollingFileAppender(); appender.setLayout(new PatternLayout("[%d{ABSOLUTE}][%-5p][%t][%c{1}] %m%n")); appender.setFile("work/log/ignite.log"); - appender.setName(IgniteLog4jRollingFileAppender.class.getSimpleName()); + appender.setName(Log4jRollingFileAppender.class.getSimpleName()); LevelRangeFilter lvlFilter = new LevelRangeFilter();