When you start the SAS Web Application Servers and access the SAS Web Applications in a web browser, the expectation is for information, warning, or error messages to be written to the SAS Web Application logs.
However, an issue occurs where the SAS Web Application logs are not created or written to the following default location:
<SASConfig>\<Lev#>\Web\Logs\<SASServerX_Y>\
This issue occurs because the web.xml for the SAS Web Application is unexpectedly missing a forward slash near the front of the path to the log4j XML file.
An error occurs in the wrapper.log file on the following Middle-tier machine :
<SASConfig>\<Lev#>\Web\WebAppServer\<SASServerX_Y>\logs\wrapper.log
For example, the following error occurs for the SAS® Model Implementation Platform web application running on SASServer11_1.
2026-07-02 15:31:51,018 Catalina-utility-2 WARN Invalid URI file://C/SAS/Config/Lev1/Web/Common/LogConfig/SASModelImplementationPlatform-log4j.xml
2026-07-02 15:31:52,697 Catalina-utility-2 ERROR Unable to access file://C/SAS/Config/Lev1/Web/Common/LogConfig/SASModelImplementationPlatform-log4j.xml java.net.UnknownHostException: C
at java.base/java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.base/java.net.Socket.connect(Unknown Source)
at java.base/sun.net.ftp.impl.FtpClient.doConnect(Unknown Source)
at java.base/sun.net.ftp.impl.FtpClient.tryConnect(Unknown Source)
at java.base/sun.net.ftp.impl.FtpClient.connect(Unknown Source)
at java.base/sun.net.ftp.impl.FtpClient.connect(Unknown Source)
at java.base/sun.net.www.protocol.ftp.FtpURLConnection.connect(Unknown Source)
at java.base/sun.net.www.protocol.ftp.FtpURLConnection.getInputStream(Unknown Source)
at org.apache.logging.log4j.core.config.ConfigurationSource.fromUri
(ConfigurationSource.java:342)
at org.apache.logging.log4j.core.config.ConfigurationFactory.getConfiguration
(ConfigurationFactory.java:302)
at org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.get
Configuration(ConfigurationFactory.java:467)
at org.apache.logging.log4j.core.config.ConfigurationFactory.getConfiguration
(ConfigurationFactory.java:325)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:690)
at org.apache.logging.log4j.core.LoggerContext.setConfigLocation
(LoggerContext.java:679)
at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.locateContext
(ClassLoaderContextSelector.java:237)
at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext
(ClassLoaderContextSelector.java:136)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext
(Log4jContextFactory.java:253)
at org.apache.logging.log4j.core.config.Configurator.initialize
(Configurator.java:182)
at org.apache.logging.log4j.web.Log4jWebInitializerImpl.initializeNonJndi
(Log4jWebInitializerImpl.java:172)
at org.apache.logging.log4j.web.Log4jWebInitializerImpl.start
(Log4jWebInitializerImpl.java:108)
at org.apache.logging.log4j.web.Log4jServletContextListener.contextInitialized
(Log4jServletContextListener.java:64)
at org.apache.catalina.core.StandardContext.listenerStart
(StandardContext.java:4768)
at org.apache.catalina.core.StandardContext.startInternal
(StandardContext.java:5230)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:726)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:698)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:696)
at org.apache.catalina.startup.HostConfig.deployDescriptor
(HostConfig.java:690)
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run
(HostConfig.java:1889)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask
.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run
(TaskThread.java:61)
at java.base/java.lang.Thread.run(Unknown Source)
Stop the SAS Web Application Server and edit the web.xml file for the SAS Web Application to correct the path to the log4j XML file. Then, start the SAS Web Application Server.
For example, complete the following steps to resolve the issue for SAS Model Implementation Platform web application running on SASServer11_1.
1. Stop the SASServer11_1 server.
2. Take a backup of the following file:
C:\SAS\Config\Lev1\Web\WebAppServer\SASServer11_1\sas_webapps\sas.
modelimplementationmanagement.war\WEB-INF\web.xml
3. Edit the existing web.xml from the previous step and change the path below as follows:
Original
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>file://C:\SAS\Config\Lev1\Web\Common\LogConfig/SASModelImplementation
Platform-log4j.xml</param-value>
</context-param>
Updated
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>file:///C:\SAS\Config\Lev1\Web\Common\LogConfig/SASModelImplementation
Platform-log4j.xml</param-value>
</context-param>
4. Save and close the file.
5. Start the SASServer11_1 server.
Reference these instructions as an example for any SAS Web Application on any SAS Web Application Server where this issue occurs.