Вы можете использовать object.assign, а затем использовать Object.keys
на obj2
. Это даст массив как [city1,city2]
. Используйте map для итерации этого массива и создания нового ключа и значения
let obj1 = {
name: 'a',
age: '23'
};
let obj2 = {
city1: 'x',
city2: 'y'
};
let obj3 = Object.assign({}, obj1, {
cities: Object.keys(obj2).map(function(item) {
return {
[item]: obj2[item]
}
})
});
console.log(obj3)
Я ничего не знаю о WebLogic, в частности, но добавлении -Dlog4j.debug
заставит log4j говорить Вам, где он ищет свою конфигурацию. Я нашел что быть неоценимым при разыскивании регистрирующихся проблем у кота ранее.
Проверьте документы для PropertyConfigurator и DOMConfigurator для получения дополнительной информации о log4j процессе конфигурации.
При помещении log4j.xml в путь к классу WebLogic возьмет его. Я использую Apache палата общин, регистрирующаяся с log4j в WebLogic, и это - легкая вещь сделать. Никакая потребность в тех опциях Java.
Где Вы устанавливаете вышеупомянутые опции? Попытайтесь поместить-Dlog4j опцию в опции Server Start для каждого сервера, которым управляют, который будет использовать log4j
Указывать вход к Регистратору Log4j вместо Входа Java по умолчанию:
* When you start the Administration Server, include the following Java option in the weblogic.Server command:
-Dweblogic.log.Log4jLoggingEnabled=true
От: http://edocs.bea.com/wls/docs103/logging/config_logs.html#wp1014610
Я никогда не получил эту работу, как я собирался.
То, что я в конечном итоге сделал, было создать какую-то работу. Я регистрирую обработчик, который слушает Weblogic ServerLog. Из этого обработчика я делаю свою регистрацию в Log4J. Эта регистрация может быть перенаправлена, чтобы сделать все, что я хочу.
Создайте пользовательский loghandler:
public class CustomLogHandler extends Handler {
..
public CustomLogHandler () throws SecurityException, IOException,
NamingException {
String log4jConfig = LogFilterConfiguration.getLog4jDirectory();
classlogger.info("log4j configured for file"+ log4jConfig );
PropertyConfigurator.configure(log4jConfig);
logFilterConfiguration = new LogFilterConfiguration();
}
public void publish(LogRecord record) {
WLLogRecord rec = (WLLogRecord) record;
if (!isLoggable(rec))
return;
if (getLoggerName().. is something i want to log) {
// do my own log4j logging
}
затем создайте приложениеLifecyCleListener. С методом почтового пути:
public void postStart(ApplicationLifecycleEvent evt) {
Logger logger = LoggingHelper.getServerLogger();
Handler oldHandler = null;
Handler[] currentHandlers = logger.getHandlers();
.. code to remove an old custom handler if exists...
with something like logger.removeHandler(oldHandler);
// add custom handler to serverlogger.
CustomLogHandler h = null;
try {
h = new CustomLogHandler ();
// If handler was removed we can add a new version.
if (!(unRemovedHandlerClasses.contains(h.getClass()))){
logger.addHandler(h);
registerMBean(h) ;
}
} catch (Exception nmex) {
classLogger.error("Error adding CustomLogHandler to serverlogger "
+ nmex.getMessage());
logger.removeHandler(h);
}
}