Data Types¶
Bro/Zeek Types¶
Boolean¶
- class zlogging.types.BoolType(empty_field=None, unset_field=None, set_separator=None, *args, **kwargs)[source]¶
Bases:
_SimpleTypeBro/Zeek
booldata type.- Parameters
- parse(data: Literal['T', b'T']) Literal[True][source]¶
- parse(data: Literal['F', b'F']) Literal[False]
- parse(data: AnyStr) Optional[bool]
Parse
datafrom string.
- tojson(data: Literal[True]) Literal[True][source]¶
- tojson(data: Literal[False]) Literal[False]
- tojson(data: None) None
Serialize
dataas JSON log format.
Numeric Types¶
- class zlogging.types.CountType(empty_field=None, unset_field=None, set_separator=None, *args, **kwargs)[source]¶
Bases:
_SimpleTypeBro/Zeek
countdata type.- Parameters
- parse(data: AnyStr) Optional[uint64][source]¶
- parse(data: int) uint64
- parse(data: uint64) uint64
Parse
datafrom string.
- class zlogging.types.IntType(empty_field=None, unset_field=None, set_separator=None, *args, **kwargs)[source]¶
Bases:
_SimpleTypeBro/Zeek
intdata type.- Parameters
- parse(data: AnyStr) Optional[int64][source]¶
- parse(data: int) int64
- parse(data: int64) int64
Parse
datafrom string.
- class zlogging.types.DoubleType(empty_field=None, unset_field=None, set_separator=None, *args, **kwargs)[source]¶
Bases:
_SimpleTypeBro/Zeek
doubledata type.- Parameters
- parse(data: AnyStr) Optional[Decimal][source]¶
- parse(data: Union[int, float]) Decimal
- parse(data: Decimal) Decimal
Parse
datafrom string.
Time Types¶
- class zlogging.types.TimeType(empty_field=None, unset_field=None, set_separator=None, *args, **kwargs)[source]¶
Bases:
_SimpleTypeBro/Zeek
timedata type.- Parameters
- parse(data: AnyStr) Optional[DateTimeType][source]¶
- parse(data: float) DateTimeType
- parse(data: DateTimeType) DateTimeType
Parse
datafrom string.
- tojson(data: DateTimeType) float[source]¶
- tojson(data: None) None
Serialize
dataas JSON log format.
- class zlogging.types.IntervalType(empty_field=None, unset_field=None, set_separator=None, *args, **kwargs)[source]¶
Bases:
_SimpleTypeBro/Zeek
intervaldata type.- Parameters
- Variables
- parse(data: AnyStr) Optional[TimeDeltaType][source]¶
- parse(data: float) TimeDeltaType
- parse(data: TimeDeltaType) TimeDeltaType
Parse
datafrom string.
- tojson(data: TimeDeltaType) float[source]¶
- tojson(data: None) None
Serialize
dataas JSON log format.
String¶
- class zlogging.types.StringType(empty_field=None, unset_field=None, set_separator=None, *args, **kwargs)[source]¶
Bases:
_SimpleTypeBro/Zeek
stringdata type.- Parameters
Network Types¶
- class zlogging.types.PortType(empty_field=None, unset_field=None, set_separator=None, *args, **kwargs)[source]¶
Bases:
_SimpleTypeBro/Zeek
portdata type.- Parameters
- parse(data: AnyStr) Optional[uint16][source]¶
- parse(data: int) uint16
- parse(data: uint16) uint16
Parse
datafrom string.
- class zlogging.types.AddrType(empty_field=None, unset_field=None, set_separator=None, *args, **kwargs)[source]¶
Bases:
_SimpleTypeBro/Zeek
addrdata type.- Parameters
- parse(data: AnyStr) Optional[IPAddress][source]¶
- parse(data: IPAddress) IPAddress
Parse
datafrom string.- Parameters
data (
Union[str,bytes,IPv4Address,IPv6Address]) – raw data- Return type
- Returns
The parsed IP address. If
datais unset,Nonewill be returned.
- tojson(data: IPAddress) str[source]¶
- tojson(data: None) None
Serialize
dataas JSON log format.- Parameters
data (
Union[IPv4Address,IPv6Address,None]) – raw data- Returns
The JSON serialisable IP address string.
- Return type
- toascii(data)[source]¶
Serialize
dataas ASCII log format.- Parameters
data (
Union[IPv4Address,IPv6Address,None]) – raw data- Returns
The ASCII representation of the IP address.
- Return type
- class zlogging.types.SubnetType(empty_field=None, unset_field=None, set_separator=None, *args, **kwargs)[source]¶
Bases:
_SimpleTypeBro/Zeek
subnetdata type.- Parameters
- parse(data: AnyStr) Optional[IPNetwork][source]¶
- parse(data: IPNetwork) IPNetwork
Parse
datafrom string.- Parameters
data (
Union[str,bytes,IPv4Network,IPv6Network]) – raw data- Return type
- Returns
The parsed IP network. If
datais unset,Nonewill be returned.
- tojson(data: IPNetwork) str[source]¶
- tojson(data: None) None
Serialize
dataas JSON log format.- Parameters
data (
Union[IPv4Network,IPv6Network,None]) – raw data- Returns
The JSON serialisable IP network string.
- Return type
- toascii(data)[source]¶
Serialize
dataas ASCII log format.- Parameters
data (
Union[IPv4Network,IPv6Network,None]) – raw data- Returns
The ASCII representation of the IP network.
- Return type
Enumeration¶
- class zlogging.types.EnumType(empty_field=None, unset_field=None, set_separator=None, namespaces=None, bare=False, enum_hook=None, *args, **kwargs)[source]¶
Bases:
_SimpleTypeBro/Zeek
enumdata type.- Parameters
empty_field (Optional[AnyStr]) – Placeholder for empty field.
unset_field (Optional[AnyStr]) – Placeholder for unset field.
set_separator (Optional[AnyStr]) – Separator for
set/vectorfields.bare (bool) – If
True, do not loadzeeknamespace by default.enum_hook (Optional[dict[str, enum.Enum]]) – Additional enum to be included in the namespace.
*args (Any) – Arbitrary positional arguments.
**kwargs (Any) – Arbitrary keyword arguments.
- parse(data: AnyStr) Optional[enum.Enum][source]¶
- parse(data: enum.Enum) enum.Enum
Parse
datafrom string.
Container Types¶
- class zlogging.types.SetType(empty_field=None, unset_field=None, set_separator=None, element_type=None, *args, **kwargs)[source]¶
Bases:
_GenericType,Generic[_S]Bro/Zeek
setdata type.- Parameters
empty_field (
Union[str,bytes,None]) – Placeholder for empty field.unset_field (
Union[str,bytes,None]) – Placeholder for unset field.set_separator (
Union[str,bytes,None]) – Separator forset/vectorfields.element_type (
Union[TypeVar(_S, bound=_SimpleType),Type[TypeVar(_S, bound=_SimpleType)],None]) – Data type of container’s elements.*args – Arbitrary positional arguments.
**kwargs – Arbitrary keyword arguments.
- Raises
ZeekTypeError – If
element_typeis not supplied.ZeekValueError – If
element_typeis not a valid Bro/Zeek data type.
Example
As a generic data type, the class supports the typing proxy as introduced PEP 484:
>>> SetType[StringType]
which is the same at runtime as following:
>>> SetType(element_type=StringType())
Note
A valid
element_typeshould be a simple data type, i.e. a subclass of_SimpleType.- element_type: _S¶
Data type of container’s elements.
- parse(data: AnyStr) Optional[set[_S]][source]¶
- parse(data: set[_S]) set[_S]
Parse
datafrom string.- Parameters
data – raw data
- Returns
The parsed set data. If
datais unset,Nonewill be returned.
- class zlogging.types.VectorType(empty_field=None, unset_field=None, set_separator=None, element_type=None, *args, **kwargs)[source]¶
Bases:
_GenericType,Generic[_S]Bro/Zeek
vectordata type.- Parameters
empty_field (
Union[str,bytes,None]) – Placeholder for empty field.unset_field (
Union[str,bytes,None]) – Placeholder for unset field.set_separator (
Union[str,bytes,None]) – Separator forset/vectorfields.element_type (
Union[TypeVar(_S, bound=_SimpleType),Type[TypeVar(_S, bound=_SimpleType)],None]) – Data type of container’s elements.*args – Arbitrary positional arguments.
**kwargs – Arbitrary keyword arguments.
- Raises
ZeekTypeError – If
element_typeis not supplied.ZeekValueError – If
element_typeis not a valid Bro/Zeek data type.
Example
As a generic data type, the class supports the typing proxy as introduced PEP 484:
>>> VectorType[StringType]
which is the same at runtime as following:
>>> VectorType(element_type=StringType())
Note
A valid
element_typeshould be a simple data type, i.e. a subclass of_SimpleType.- element_type: _S¶
Data type of container’s elements.
- parse(data: AnyStr) Optional[list[_S]][source]¶
- parse(data: list[_S]) list[_S]
Parse
datafrom string.- Parameters
data – raw data
- Returns
The parsed list data. If
datais unset,Nonewill be returned.
- class zlogging.types.RecordType(empty_field=None, unset_field=None, set_separator=None, *args, **element_mapping)[source]¶
Bases:
_VariadicTypeBro/Zeek
recorddata type.- Parameters
empty_field (
Union[str,bytes,None]) – Placeholder for empty field.unset_field (
Union[str,bytes,None]) – Placeholder for unset field.set_separator (
Union[str,bytes,None]) – Separator forset/vectorfields.element_mapping (
Union[Type[_SimpleType],_SimpleType,_GenericType]) – Data type of container’s elements.*args (Any) – Arbitrary positional arguments.
**kwargs (Any) – Arbitrary keyword arguments.
- Raises
ZeekTypeError – If
element_mappingis not supplied.ZeekValueError – If
element_mappingis not a valid Bro/Zeek data type; or in case of inconsistency fromempty_field,unset_fieldandset_separatorof each field.
- Return type
Note
A valid
element_mappingshould be a simple or generic data type, i.e. a subclass of_SimpleTypeor_GenericType.See also
See
_aux_expand_typing()for more information about processing the fields.- element_mapping: OrderedDict[str, Union[_SimpleType, _GenericType]]¶
Data type of container’s elements.
Any type¶
- class zlogging.types.AnyType(empty_field=None, unset_field=None, set_separator=None, json_encoder=None, *args, **kwargs)[source]¶
Bases:
_SimpleTypeBro/Zeek
anydata type.- Parameters
empty_field (
Union[str,bytes,None]) – Placeholder for empty field.unset_field (
Union[str,bytes,None]) – Placeholder for unset field.set_separator (
Union[str,bytes,None]) – Separator forset/vectorfields.json_encoder (
Optional[Type[JSONEncoder]]) – JSON encoder class fortojson()method calls.*args – Arbitrary positional arguments.
**kwargs – Arbitrary keyword arguments.
Note
The
AnyTypeis only used for arbitrary typing as required inJSONParser. It is NOT a valid type of Bro/Zeek logging framework.
Abstract Base Types¶
- class zlogging.types.BaseType(empty_field=None, unset_field=None, set_separator=None, *args, **kwargs)[source]¶
Bases:
objectBase Bro/Zeek data type.
- Parameters
- __call__(data)[source]¶
Parse
datafrom string.This is a proxy method which calls to
parse()of the type implementation.
- class zlogging.types._SimpleType(empty_field=None, unset_field=None, set_separator=None, *args, **kwargs)[source]¶
Bases:
BaseTypeSimple data type.
In Bro/Zeek script language, such simple type includes
bool,count,int,double,time,interval,string,addr,port,subnetandenum.To support arbitrary typing as required in
JSONParser,any, the arbitrary date type is also included.- Parameters
- class zlogging.types._GenericType(empty_field=None, unset_field=None, set_separator=None, *args, **kwargs)[source]¶
-
Generic data type.
In Bro/Zeek script language, such generic type includes
setandvector, which are also known as container types.- element_type: _S¶
Data type of container’s elements.
- class zlogging.types._VariadicType(empty_field=None, unset_field=None, set_separator=None, *args, **kwargs)[source]¶
Bases:
BaseTypeVariadic data type.
In Bro/Zeek script language, such variadic type refers to
record, which is also a container type.- Parameters
empty_field (Optional[AnyStr]) –
unset_field (Optional[AnyStr]) –
set_separator (Optional[AnyStr]) –
args (Any) –
kwargs (Any) –
- element_mapping: OrderedDict[str, Union[_SimpleType, _GenericType]]¶
Data type of container’s elements.