В Python 3.0, 5 / 2
возвратится 2.5
, и 5 // 2
возвратится 2
. Первый - деление с плавающей точкой, и последний является подразделением пола, иногда также названным целочисленным делением.
В Python 2.2 или позже в 2.x строка, нет никакого различия для целых чисел, если Вы не выполняете from __future__ import division
, который заставляет Python 2.x принимать поведение 3,0
Независимо от будущего импорта, 5.0 // 2
возвратится 2.0
, так как это - результат подразделения пола операции.
можно найти подробное описание в https://docs.python.org/whatsnew/2.2.html#pep-238-changing-the-division-operator
Проблема, вероятно, в том, что вы пытаетесь создать источник событий в журнале, который не не существует. Вам необходимо указать журнал «Приложение».
Попробуйте изменить его на:
if (!EventLog.SourceExists(cs))
EventLog.CreateEventSource(cs, "Application");
EventLog.WriteEntry(cs, message, EventLogEntryType.Error);
Также: внутри sharepoint, если приложение работает как зарегистрированный пользователь (через аутентификацию Windows или делегирование), у пользователя не будет доступ для создания источника события. В этом случае одна уловка состоит в том, чтобы создать событие с помощью потока ThreadPool, который при создании будет иметь контекст безопасности пользователя, от имени которого работает пул приложений.
Here's how I implemented Event logging. I created a generic ILogger interface so I can swap in different logging mechanisms:
interface ILogger
{
void Debug(string text);
void Warn(string text);
void Error(string text);
void Error(string text, Exception ex);
}
My implementation class is very simple:
class EventLogger : ILogger
{
public void Debug(string text)
{
EventLog.WriteEntry("MyAppName", text, EventLogEntryType.Information);
}
public void Warn(string text)
{
EventLog.WriteEntry("MyAppName", text, EventLogEntryType.Warning);
}
public void Error(string text)
{
EventLog.WriteEntry("MyAppName", text, EventLogEntryType.Error);
}
public void Error(string text, Exception ex)
{
Error(text);
Error(ex.StackTrace);
}
}
Note that I do not instantiate EventLog. To use my logger class I just have the following reference (you could have this returned by a static factory method):
private static readonly ILogger log = new EventLogger();
And the actual usage is like this:
try
{
// business logic
}
catch (Exception ex)
{
log.Error("Exception in MyMethodName()", ex);
}