Вы можете построить объединение динамически:
select name from sys.databases
, а затем проверить, есть ли в базе данных таблица:
select name from [dbname_from_above].sys.tables where name = 'YourTable'
. Это дает вам все базы данных для объединения. Вы можете создать запрос на стороне клиента или в динамическом SQL.
найдите Свойства контекста log4net ...
в вашем коде:
log4net.GlobalContext.Properties["id"] = "12345";
затем
log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo("configPath"));
в файле конфигурации log4net:
<file type="log4net.Util.PatternString"
value="%property{id}rolling-log.txt" />
Я считаю, что файл конфигурации Log4Net поддерживает переменные среды (например, ИМЯ ПОЛЬЗОВАТЕЛЯ), а также настраиваемые шаблоны, которые должны дать вам то, что вы хотите.
Посмотрите на «PatternString для конфигурации на основе шаблонов» в примечания к выпуску Log4Net V1.2.10 .
Я не думаю, что файл журнала для каждого пользователя возможен, но вы можете написать собственный уровень между log4net и вашим приложением, который добавляет идентификатор пользователя перед записью в журнал.
Вы можете написать собственный макет, унаследовав его от XmlLayoutBase.
<file type="log4net.Util.PatternString">
<conversionPattern value="C:\Logs\log-%date{ yyyy.MM.dd.HH.mm.ss}-[%processid].log" />
</file>
Оформить заказ RollingPatternFileAppender, как и приложение Rollingfileappender, плюс имя динамического файла http://mysite.verizon.net/vze14bhji