Hello Ceki!
Here, are the Remote Classes. There're also some Test Classes.
The IRemoteNode, RemoteNode and the LoggingEvent must be available in
the codebase directory.
I couldn't avoid this, seems to be a RMI requirement.
Added following classes: src/org/apache/log4j/rmi:
IRemoteNode.java, RemoteAppender.java, RemoteNode.java
/src/org/apache/log4j/rmi/test:
Client.java, client.lcf, client.policy, IServer.java, RemoteLog.java,
runClient.bat, runServer.bat, Server.java, server.lcf, server.policy
/src/org/apache/log4j/spi:
LoggingEvent.java (added the mehtod pushNDC)
/build:
build.xml (adds in target build, jar, doc)
Regards
Alessandro
IRemoteNode-1.java
RemoteNode-1.java
Client-1.java
# -------------------------------------------------------------------------
# This config file is intended to be used by a client wishing to log using
# a RemoteAppender.
# -------------------------------------------------------------------------
log4j.rootCategory=DEBUG, A1, CON
#log4j.category.main=DEBUG
#log4j.category.communicate=DEBUG
log4j.appender.A1=org.apache.log4j.rmi.RemoteAppender
log4j.appender.A1.note=Client
#log4j.appender.A1.layout=org.apache.log4j.PatternLayout
#log4j.appender.A1.layout.ConversionPattern=%-5r %-5p %x [%t] %c{2} - %m%n
log4j.appender.CON=org.apache.log4j.ConsoleAppender
log4j.appender.CON.layout=org.apache.log4j.PatternLayout
log4j.appender.CON.layout.ConversionPattern=%-5r %-5p [%t] %c{2} - %m%n
grant {
// Allow everything for now
permission java.security.AllPermission;
};
IServer-1.java
RemoteLog-1.java
@set CLASSPATH=.;lib/log4j.jar
@rem change to your locals
@set CODEBASE=file:///E:\xdevelop\Log4J\
@set POLICY=org/apache/log4j/rmi/test/client.policy
@set MAIN=org.apache.log4j.rmi.test.Client
@set JAVA_PROPERTY=-Djava.security.policy=%POLICY%
@set JAVA_PROPERTY=%JAVA_PROPERTY% -Djava.rmi.server.codebase=%CODEBASE%
@rem @set JAVA_PROPERTY=%JAVA_PROPERTY% -Djava.rmi.server.useCodebaseOnly=true
cd ..\..\..\..\..\
"%JAVA_HOME%\bin\java" %JAVA_PROPERTY% -classpath "%CLASSPATH%" %MAIN%
pause
@set CLASSPATH=.;lib/log4j.jar
@rem change to your locals
@set CODEBASE=file:///E:\xdevelop\Log4J\
@set POLICY=org/apache/log4j/rmi/test/server.policy
@set MAIN=org.apache.log4j.rmi.test.Server
@set JAVA_PROPERTY=-Djava.security.policy=%POLICY%
@set JAVA_PROPERTY=%JAVA_PROPERTY% -Djava.rmi.server.codebase=%CODEBASE%
@rem @set JAVA_PROPERTY=%JAVA_PROPERTY% -Djava.rmi.server.useCodebaseOnly=true
start rmiregistry
cd ..\..\..\..\..\
"%JAVA_HOME%\bin\java" %JAVA_PROPERTY% -classpath "%CLASSPATH%" %MAIN%
Server-1.java
log4j.rootCategory=DEBUG, CON
log4j.appender.CON=org.apache.log4j.ConsoleAppender
log4j.appender.CON.layout=org.apache.log4j.PatternLayout
log4j.appender.CON.layout.ConversionPattern=%-5r %-5p (%x)[%t] %c{2} - %m%n
grant {
// Allow everything for now
permission java.security.AllPermission;
};
LoggingEvent-1.java
<!-- This file is an ANT build script. ANT is a Java based build tool. -->
<!-- It is availale from http://jakarta.apache.org/ant/ -->
<!-- ================================================================= -->
<!-- NOTE: all directories are relative to jakarta-log4j/ -->
<!-- the parent of build/ -->
<!-- ================================================================= -->
<project name="log4j" default="usage" basedir=".." >
<property name="version" value="1.1.3"/>
<!-- The base directory relative to which most targets are built -->
<property name="base" value="."/>
<!-- The directory where source files are stored. -->
<property name="java.source.dir" value="src/java/"/>
<!-- The directory where the package-list file is found, ./ or -->
<!-- build/ -->
<property name="packaging.dir" value="build"/>
<!-- Destination for compiled files -->
<property name="javac.dest" value="dist/classes"/>
<!-- Destination for generated jar files -->
<property name="jar.dest" value="dist/lib"/>
<!-- Destination for documentation files generated or not -->
<property name="docs" value="docs"/>
<!-- Destination for javadoc generated files -->
<property name="javadoc.dest" value="docs/api"/>
<!-- Icons source directory. -->
<property name="icons.source" value="icons"/>
<!-- The stem where most log4j source code is located. -->
<property name="stem" value="org/apache/log4j"/>
<!-- Some targets needs a more precise stem. -->
<property name="BSTEM" value="${java.source.dir}/${stem}"/>
<!-- Original manifest.mf file before filtering. -->
<property name="manifest.src" value="build/manifest.mf"/>
<!-- Directory where release images go. -->
<property name="dist.images" value="dist/images"/>
<!-- Directory for temporary files. -->
<property name="dist.tmp" value="dist/tmp"/>
<target name="usage">
<echo>
These are the targets supported by this ANT build scpript:
build - compile all project files, if a certain library is missing,
then the compilation of its dependents are skipped.
javadoc - build project javadoc files
jar - build log4j-core and log4j jar files
dist - will create a complete distribution in dist/
</echo>
</target>
<target name="junitCheck">
<available classname="junit.framework.TestCase" property="junit-present"/>
</target>
<target name="junit" depends="junitCheck" if="junit-present">
<echo message="JUnit is present."/>
</target>
<target name="xercesCheck">
<available classname="org.apache.xerces.parsers.DOMParser"
property="xerces-present"/>
<available classname="org.apache.xerces.parsers.DOMParser"
property="jaxp-present"/>
</target>
<target name="xerces" depends="xercesCheck" if="xerces-present">
<echo message="Xerces is present."/>
</target>
<target name="sunParserCheck">
<available classname="com.sun.xml.parser.DocumentBuilderFactoryImpl"
property="sunParser-present"/>
<available classname="com.sun.xml.parser.DocumentBuilderFactoryImpl"
property="jaxp-present"/>
</target>
<target name="sunParser" depends="sunParserCheck" if="sunParser-present">
<echo message="Sun JAXP parser is present."/>
</target>
<target name="jmsCheck">
<available classname="javax.jms.Message" property="jms-present"/>
</target>
<target name="jms" depends="jmsCheck" if="jms-present">
<echo message="JMS is present."/>
</target>
<target name="jndiCheck">
<available classname="javax.naming.Context" property="jndi-present"/>
</target>
<target name="jndi" depends="jndiCheck" if="jndi-present">
<echo message="JNDI is present."/>
</target>
<target name="javamailCheck">
<available classname="javax.mail.Message" property="javamail-present"/>
</target>
<target name="javamail" depends="javamailCheck" if="javamail-present">
<echo message="JAVAMAIL is present."/>
</target>
<!-- ================================================================= -->
<!-- Initialize variables -->
<!-- NOTE: all directories are relative to jakarta-log4j/ -->
<!-- ================================================================= -->
<target name="init">
<tstamp />
</target>
<target name="build" depends="init, build.core, build.xml, build.unitTests,
build.javamail, build.jms"/>
<target name="build.core" depends="init">
<mkdir dir="${javac.dest}" />
<javac srcdir="${java.source.dir}"
destdir="${javac.dest}"
includes="${stem}/**/*.java, ${stem}/xml/XMLLayout.java,"
classpath="${classpath}"
excludes="misc/*, **/UnitTest*.java,
**/doc-files/*,
${stem}/xml/**,
${stem}/gui/**,
${stem}/net/SMTPAppender.java,
${stem}/net/JMS*.java,
${stem}/or/MessageRenderer.java,
**/pending/**"
debug="on"/>
<rmic base="${javac.dest}" classname="org.apache.log4j.examples.NumberCruncherServer"/>
<rmic base="${javac.dest}" classname="org.apache.log4j.rmi.RemoteNode"/>
<rmic base="${javac.dest}" classname="org.apache.log4j.rmi.test.Server"/>
</target>
<target name="build.unitTests" depends="init, junit" if="junit-present">
<javac srcdir="${java.source.dir}"
destdir="${javac.dest}"
includes="**/UnitTest*.java"
classpath="${classpath}"/>
</target>
<target name="build.xml" depends="init, xerces, sunParser" if="jaxp-present">
<javac srcdir="${java.source.dir}"
destdir="${javac.dest}"
includes="${stem}/xml/**/*.java"
excludes="${stem}/xml/examples/doc-files/**.java,
${stem}/xml/Transform.java"
classpath="${classpath}"/>
<copy file="${BSTEM}/xml/log4j.dtd"
tofile="${javac.dest}/${stem}/xml/log4j.dtd" />
</target>
<target name="build.javamail" depends="init, javamail"
if="javamail-present">
<javac srcdir="${java.source.dir}"
destdir="${javac.dest}"
includes="${stem}/net/SMTPAppender.java"
classpath="${classpath}"/>
</target>
<target name="build.jms" depends="init, jms, jndi" if="jms-present">
<javac srcdir="${java.source.dir}"
destdir="${javac.dest}"
includes="${stem}/net/JMS*.java"
classpath="${classpath}"/>
</target>
<!-- ================================================================= -->
<!-- Remove all generated (compiled) class files. -->
<!-- ================================================================= -->
<target name="clean" depends="init">
<delete dir="${javac.dest}/" />
</target>
<!-- ================================================================= -->
<!-- Remove the temporary manifest file, actual work is done in the -->
<!-- dependencies. -->
<!-- ================================================================= -->
<target name="jar" depends="log4j-core.jar, log4j.jar">
<delete file="${jar.dest}/manifest.mf"/>
</target>
<target name="prejar" depends="build">
<mkdir dir="${jar.dest}"/>
<filter token="version" value="${version}" />
<copy file="${manifest.src}" tofile="${jar.dest}/manifest.mf"
filtering="true"/>
</target>
<!-- ================================================================= -->
<!-- Create log4j-core.jar, exluding non-core files -->
<!-- ================================================================= -->
<target name="log4j-core.jar" depends="prejar">
<delete file="${jar.dest}/log4j-core.jar"/>
<jar jarfile="${jar.dest}/log4j-core.jar" basedir="${javac.dest}"
includes="${stem}/*.class,
${stem}/helpers/*.class,
${stem}/spi/*.class,
${stem}/or/*.class,
${stem}/config/PropertySetter.class
${stem}/config/PropertySetterException.class"
excludes="**/StressCategory*, **/TTCC*, **/SimpleLayout.*,
${stem}/DailyRollingFileAppender.class,
${stem}/Rolling*.class,
${stem}/HTMLLayout.class,
${stem}/helpers/CountingQuietWriter.class,
${stem}/helpers/DateLayout.class,
${stem}/or/ThreadGroupRenderer.class,
**/AsyncAppender.*, **/Dispatcher.*, **/BoundedFIFO.*,
**/Syslog*, **/RelativeTimeDateFormat.*,
${stem}/gui/**/*.class,
**/UnitTest*.class,
${stem}/or/MessageRenderer.class,
${stem}/spi/TriggeringEventEvaluator.class
${stem}/helpers/CyclicBuffer.class"
manifest="${jar.dest}/manifest.mf"
/>
</target>
<!-- ================================================================= -->
<!-- Create log4j.jar, excluding tests and other odds and ends. -->
<!-- ================================================================= -->
<target name="log4j.jar" depends="prejar">
<delete file="${jar.dest}/log4j.jar"/>
<jar jarfile="${jar.dest}/log4j.jar" basedir="${javac.dest}"
includes="${stem}/*.class, ${stem}/xml/log4j.dtd,
${stem}/config/*.class,
${stem}/helpers/*.class,
${stem}/spi/*.class,
${stem}/net/*.class,
${stem}/rmi/*.class,
${stem}/varia/*.class,
${stem}/nt/*.class,
${stem}/xml/*.class,
${stem}/or/*.class,
${stem}/config/*.class,
${stem}/gui/TextPaneAppender.class"
excludes="**/StressCategory*, **/UnitTest**"
manifest="${jar.dest}/manifest.mf"
/>
</target>
<!-- ================================================================= -->
<!-- This target builds the javadoc files. -->
<!-- ================================================================= -->
<target name="javadoc" depends="init">
<mkdir dir="${javadoc.dest}" />
<copy todir="${BSTEM}/examples/doc-files/">
<fileset dir="${BSTEM}/examples/"
includes="Sort.java, SortAlgo.java, Trivial.java, MyCategory.java,
MyCategoryFactory.java, mycat.good, mycat.bad, factor.html,
MyPatternLayout.java, MyPatternParser.java, sort2.lcf, sort3.lcf,
NumberCruncherClient.java, NumberCruncherServer.java, sort1.lcf,
NumberCruncher.java, factor.lcf, sort4.lcf"/>
</copy>
<copy todir="${BSTEM}/xml/examples/doc-files/" >
<fileset dir="${BSTEM}/xml/examples/"
includes="XMLSample.java, sample*.xml, extension1.xml,
extension2.xml, XCategory.java, XTest.java"/>
</copy>
<copy todir="${BSTEM}/xml/doc-files/" >
<fileset dir="${BSTEM}/xml/" includes="log4j.dtd"/>
</copy>
<javadoc sourcepath="${java.source.dir}"
destdir="${javadoc.dest}"
packagenames="org.apache.log4j,
org.apache.log4j.config,
org.apache.log4j.examples,
org.apache.log4j.examples.appserver,
org.apache.log4j.helpers,
org.apache.log4j.net,
org.apache.log4j.rmi,
org.apache.log4j.nt,
org.apache.log4j.or,
org.apache.log4j.performance,
org.apache.log4j.spi,
org.apache.log4j.varia,
org.apache.log4j.xml,
org.apache.log4j.xml.examples"
version="true"
protected="true"
author="true"
use="true"
overview="${docs}/overview.html"
doctitle="log4j version ${version}<br>API Specification"
windowtitle="Log4j Version ${version}"
header="<b>Log4j ${version}</b>"
bottom="Please <a href=http://lists.sourceforge.net/mailman/listinfo/log4j-announce><b>notify me</b></a> about new log4j releases. <hr>">
<link offline="true"
href="http://java.sun.com/products/jdk/1.2/docs/api"
packageListLoc="${packaging.dir}"/>
</javadoc>
</target>
<!-- ================================================================= -->
<!-- Build a complete distribution. Results go to ${dist.images} -->
<!-- ================================================================= -->
<target name="dist" depends="init, clean, jar, javadoc">
<delete verbose="true">
<fileset dir=".">
<patternset>
<include name="**/*.bak"/>
<include name="dist/velocity.log"/>
<include name="${BSTEM}/**/temp*"/>
<include name="${BSTEM}/performance/test"/>
<include name="${BSTEM}/test/current.*"/>
<include name="${BSTEM}/test/current.*"/>
<include name="${BSTEM}/examples/test"/>
<include name="${BSTEM}/test/logging.*"/>
<include name="${BSTEM}/test/log4j.properties"/>
<include name="{$BSTEM}/test/socket.lcf"/>
<include name="${BSTEM}/test/file"/>
<include name="${BSTEM}/test/output.*"/>
<include name="${BSTEM}/nt/EventLogCategories.dbg"/>
<include name="${BSTEM}/nt/*.h"/>
<include name="${BSTEM}/nt/*.obj"/>
<include name="${BSTEM}/nt/*.idb"/>
<include name="${BSTEM}/nt/EventLogCategories.rc"/>
<include name="${BSTEM}/nt/EventLogCategories.RES"/>
<include name="${BSTEM}/nt/EventLogCategories.res"/>
<include name="${BSTEM}/nt/MSG00001.bin"/>
<include name="${BSTEM}/nt/NTEventLogAppender.lib"/>
<include name="${BSTEM}/nt/NTEventLogAppender.exp"/>
<include name="${BSTEM}/nt/vc50.idb"/>
<include name="${BSTEM}/net/test/loop.log"/>
<include name="${BSTEM}/net/test/loop.log.1"/>
<include name="${jar.dest}/manifest.mf"/>
<include name="${javac.dest}/*.class"/>
</patternset>
</fileset>
</delete>
<mkdir dir="${dist.images}" />
<mkdir dir="${dist.tmp}/jakarta-log4j-${version}" />
<copy todir="${dist.tmp}/jakarta-log4j-${version}">
<fileset dir="${base}"
includes="make/**,
src/**,
docs/**,
Makefile,
build/*, build.bat, build.sh,
build/lib/*.jar,
manifest.mf,
INSTALL,
LICENSE.APL,
dist/lib/*.jar,
org/**,
icons/**,
dist/classes/**,
contribs/**"
excludes="make/make.loc,
**/*.bak, **/goEnv.bat,
**/.#*"/>
</copy>
<fixcrlf srcdir="${dist.tmp}/jakarta-log4j-${version}"
includes="build.sh" cr="remove"/>
<fixcrlf srcdir="${dist.tmp}/jakarta-log4j-${version}"
includes="build.bat" cr="add"/>
<chmod dir="${dist.tmp}/jakarta-log4j-${version}"
includes="build.sh" perm="+x"/>
<tar tarfile="${dist.images}/jakarta-log4j-${version}.tar"
basedir="${dist.tmp}"
includes="jakarta-log4j-${version}/**" />
<gzip src="${dist.images}/jakarta-log4j-${version}.tar"
zipfile="${dist.images}/jakarta-log4j-${version}.tar.gz" />
<zip zipfile="${dist.images}/jakarta-log4j-${version}.zip"
basedir="${dist.tmp}"
includes="jakarta-log4j-${version}/**" />
<delete dir="${dist.tmp}" />
</target>
</project>
RemoteAppender.java
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]